{"version":3,"sources":["middleware/Api.ts","component/Placeholder/TextLoading.js","component/Dial/AutoHidden.js","redux/explorer/reducer.ts","redux/explorer/async.ts","services/navigate.ts","utils/page.ts","component/Uploader/core/utils/pool.ts","redux/explorer/index.ts","component/Uploader/core/utils/validator.ts","component/Uploader/core/utils/request.ts","middleware/Auth.ts","services/file.ts","component/Navbar/DarkModeSwitcher.js","component/Navbar/PolicySwitcher.js","component/FileManager/Navigator/SubActions.js","component/Modals/Report.js","component/Modals/PurchaseShare.js","component/Dial/Save.js","component/Modals/Loading.js","component/Modals/Copy.js","component/Modals/CreateShare.js","component/Modals/Decompress.js","component/Modals/Compress.js","component/Modals/Relocate.js","component/Modals/OptionSelector.js","component/FileManager/Modals.js","utils/index.js","component/Viewer/Text.js","component/Viewer/Code.js","component/Uploader/core/errors/index.ts","component/Common/Snackbar.js","component/Uploader/core/utils/helper.ts","component/Uploader/core/utils/index.ts","component/Navbar/UserAvatarPopover.js","component/Navbar/UserAvatar.js","component/Navbar/Navbar.js","component/Navbar/SearchBar.js","component/Navbar/StorageBar.js","component/Navbar/UserInfo.js","component/Navbar/FileTags.js","utils/zip.js","utils/api.ts","redux/explorer/action.ts","component/FileManager/ImgPreview.js","config.ts","component/Uploader/core/types.ts","component/Uploader/core/uploader/base.ts","component/Uploader/core/logger.ts","component/Uploader/core/api/index.ts","component/Uploader/core/index.ts","component/Uploader/core/uploader/chunk.ts","component/Uploader/core/uploader/local.ts","component/Uploader/core/uploader/remote.ts","component/Uploader/core/uploader/onedrive.ts","component/Uploader/core/uploader/oss.ts","component/Uploader/core/uploader/qiniu.ts","component/Uploader/core/uploader/cos.ts","component/Uploader/core/uploader/upyun.ts","component/Uploader/core/uploader/s3.ts","component/Uploader/core/uploader/placeholder.ts","component/Dial/Create.js","component/Uploader/Popup/TaskDetail.js","component/Uploader/Popup/UploadTask.js","component/Uploader/UseUpload.js","component/Modals/ConcurrentOption.js","component/Uploader/Popup/MoreActions.js","component/Uploader/Popup/TaskList.js","component/Placeholder/DropFile.js","component/Uploader/Uploader.js","utils/datetime.js","redux/viewUpdate/action.ts","component/FileManager/TypeIcon.js","serviceWorker.js","middleware/AuthRoute.js","middleware/NoAuthRoute.js","component/Placeholder/PageLoading.js","component/Share/NotFound.js","component/Common/ICPFooter.js","component/Placeholder/Captcha.js","hooks/normal.js","component/Login/ReCaptchaWrapper.js","component/Login/ReCaptcha.js","hooks/recaptcha.js","hooks/tcaptcha.js","hooks/useCaptcha.js","component/Login/LoginForm.js","component/FileManager/Navigator/PathButton.js","component/FileManager/Navigator/DropDownItem.js","component/FileManager/Navigator/DropDown.js","component/FileManager/Navigator/Navigator.js","component/FileManager/FileName.js","component/FileManager/SmallIcon.js","component/FileManager/FileIcon.js","component/FileManager/Folder.js","component/FileManager/DnD/Preview.js","component/FileManager/DnD/DragLayer.js","component/FileManager/TableRow.js","component/FileManager/DnD/DropWarpper.js","component/FileManager/DnD/Scrolling.js","component/FileManager/ObjectIcon.js","component/FileManager/ContextMenu.js","component/FileManager/Explorer.js","hooks/pagination.js","component/Placeholder/ListLoading.js","component/FileManager/Sidebar/SideDrawer.js","component/FileManager/PaginationItem.js","component/FileManager/Pagination.js","component/FileManager/FileManager.js","component/Viewer/SelectMenu.js","component/Viewer/Video.js","component/Share/SearchResult.js","component/Share/MyShare.js","component/Modals/SelectFile.js","component/Download/DownloadingCard.js","component/Download/FinishedCard.js","component/Dial/Aria2.js","component/Download/Download.js","component/Share/LockedFile.js","component/Share/Creator.js","component/Share/SharedFile.js","component/Share/SharedFolder.js","component/Share/SharePreload.js","component/Viewer/Doc.js","component/VAS/Quota.js","component/VAS/PackSelect.js","component/VAS/BuyQuota.js","component/Modals/CreateWebDAVAccount.js","component/Modals/CreateWebDAVMount.js","component/Setting/WebDAV.js","component/Setting/Tasks.js","component/Setting/Profile.js","component/Setting/Authn.js","component/Modals/TimeZone.js","component/Modals/BindPhone.js","component/Setting/UserSetting.js","component/Login/QQ.js","component/Login/Register.js","component/Login/Activication.js","component/Login/ResetForm.js","component/Login/Reset.js","component/Modals/SiteNotice.js","component/FileManager/MusicPlayer.js","component/Viewer/Epub.js","App.js","middleware/Init.js","redux/viewUpdate/reducer.ts","reducers/index.js","component/Placeholder/ErrorBoundary.js","index.js","redux/combineReducers.ts","component/Placeholder/Nothing.js","component/FileManager/PathSelector.js","hooks/fileSubtitle.js"],"names":["baseURL","getBaseURL","getPreviewURL","isShare","shareID","fileID","path","encodeURIComponent","instance","axios","create","withCredentials","AppError","message","code","error","stack","Error","interceptors","response","use","rawData","data","undefined","Auth","signout","window","location","href","msg","Promise","reject","useStyles","makeStyles","theme","loader","width","padding","breakpoints","down","MyLoader","props","backgroundColor","dark","foregroundColor","className","TextLoading","useTheme","classes","palette","type","AutoHidden","children","enable","hide","element","useState","hidden","setHidden","prev","scrollY","lastUpdate","useEffect","addEventListener","e","currentTarget","current","scrollTop","handleNavigation","in","initState","dndSignal","dndTarget","dndSource","fileList","dirList","selected","selectProps","isMultiple","withFolder","withFile","withSourceEnabled","lastSelect","file","id","name","size","date","create_date","index","shiftSelectedIds","imgPreview","first","other","audioPreview","playingName","paused","isOpen","fileSave","sideBarOpen","checkSelectedProps","length","forEach","value","source_enabled","explorer","state","action","Object","assign","target","source","list","addedSelected","targets","newSelected","fileIds","filteredSelected","filter","includes","search","keywords","searchPath","open","currentPolicy","policy","purchase","askForOption","options","title","dispatch","getState","a","resolve","dialog","setOptionModal","onClose","callback","option","purchased","Map","trySharePurchase","share","pathname","router","pathHelper","isSharePage","score","Check","toggleSnackbar","closeAllModals","GetUser","group","shareFree","has","key","confirmPurchase","set","apiURL","API","get","statusHelper","isHomePage","startsWith","isAdminPage","isLoginPage","isMobile","innerWidth","Pool","limit","queue","processing","uploader","push","check","item","this","v","findIndex","task","dst","ProcessingTaskDuplicatedError","release","run","then","err","processingNum","availableNum","Math","max","slice","actions","reducers","setNavigator","navigatorLoading","navigateTo","navigator","setPagination","viewUpdate","pagination","page","navigateUp","pathSplit","split","pop","newPath","join","drawerToggleAction","dragAndDrop","changeViewMethod","method","toggleDaylightMode","changeContextMenu","menuType","setNavigatorLoadingStatus","status","setNavigatorError","openCreateFolderDialog","openCreateFileDialog","setUserPopover","anchor","setShareUserPopover","openRenameDialog","openResaveDialog","openMoveDialog","openRemoveDialog","openShareDialog","applyThemes","setSessionStatus","openMusicDialog","openRemoteDownloadDialog","openTorrentDownloadDialog","openDecompressDialog","openCompressDialog","openRelocateDialog","openGetSourceDialog","openCopyDialog","openLoadingDialog","text","vertical","horizontal","color","setModalsLoading","refreshFileList","searchMyFile","showImgPreivew","showAudioPreview","audioPreviewSetIsOpen","audioPreviewSetPlaying","refreshStorage","saveFile","setSiteConfig","config","checkers","allowedSuffix","ext","FileValidateError","maxSize","validate","c","CancelToken","baseConfig","transformResponse","JSON","parse","TransformResponseError","cdBackendConfig","request","url","catch","isCancel","RequestCanceledError","HTTPError","requestAPI","isAuthenticated","authenticate","cb","SetUser","localStorage","getItem","newUser","setItem","stringify","anonymous","oldUser","SetPreference","preference","GetPreference","GetPreferenceWithDefault","defaultVal","getDownloadURL","reqURL","downloadPath","put","icon","opacity","DarkModeSwitcher","position","ThemeType","useSelector","siteConfig","useDispatch","ToggleThemeMode","useCallback","isDayLight","isDark","placement","classNames","onClick","uploadFromFile","blue","policySelected","green","header","fontSize","minWidth","maxHeight","overflow","PolicySwitcher","React","anchorEl","setAnchorEl","policies","setPolicies","loading","setLoading","ToggleSnackbar","RefreshFileList","handleClose","Boolean","event","anchorOrigin","transformOrigin","map","button","component","post","switchTo","primary","RouterLink","to","sideButton","marginRight","sortOptions","paginationOption","SubActions","isSmall","inherit","viewMethod","explorerViewMethod","shareInfo","pageSize","OpenLoadingDialog","ChangeSortMethod","changeSortMethod","OpenResaveDialog","SetShareUserPopover","ChangePageSize","changePageSize","anchorSort","setAnchorSort","anchorPagination","setAnchorPagination","selectedIndex","setSelectedIndex","openReport","setOpenReport","handlePaginationChange","s","toggleViewMethod","newMethod","toString","parseInt","0","1","2","3","4","5","6","7","handleMenuItemClick","creator","nick","style","height","src","widthAnimation","shareUrl","wrapper","margin","spacing","buttonProgress","secondary","light","top","left","flexCenter","alignItems","noFlex","display","scoreCalc","marginTop","Report","reason","setReason","des","setDes","setTimeout","aria-labelledby","maxWidth","fullWidth","aria-label","onChange","reportReasons","k","control","label","multiline","variant","rows","disabled","PurchaseShareDialog","autoFocus","fab","right","bottom","zIndex","badge","fabProgress","buttonSuccess","SaveButton","buttonClassname","clsx","avatar","loadingContainer","marginLeft","LoadingDialog","modals","loadingText","Dialog","DialogContent","DialogContentText","CircularProgress","contentFix","CopyDialog","selectedPath","setSelectedPath","selectedPathName","setSelectedPathName","SetModalsLoading","DialogTitle","PathSelector","presentPath","onSelect","folder","DialogActions","Button","preventDefault","dirs","items","src_dir","modalsLoading","ExpansionPanel","withStyles","root","border","boxShadow","borderBottom","expanded","MuiExpansionPanel","ExpansionPanelSummary","content","MuiExpansionPanelSummary","ExpansionPanelDetails","background","default","MuiExpansionPanelDetails","CreatShare","scoreEnabled","score_enabled","scoreRate","share_score_rate","lastSubmit","useRef","setExpanded","shareURL","setShareURL","password","downloads","expires","showPassword","values","setValues","expire","preview","shareOption","setShareOption","handleChange","prop","handleExpand","panel","isExpanded","handleCheck","Divider","List","aria-controls","ListItem","ListItemIcon","ListItemText","ListItemSecondaryAction","Checkbox","checked","FormControl","InputLabel","htmlFor","OutlinedInput","endAdornment","InputAdornment","Tooltip","IconButton","random","substr","edge","onMouseDown","on","onIcon","Visibility","offIcon","VisibilityOff","labelWidth","Select","labelId","MenuItem","Typography","inputProps","min","ceil","TextField","onFocus","select","readonly","clipboard","writeText","submitFormBody","is_dir","DecompressDialog","SubmitDecompressTask","submitDecompressTask","CompressDialog","fileName","setFileName","SubmitCompressTask","submitCompressTask","input","RelocateDialog","selectedPolicy","setSelectedPolicy","dst_policy_id","OptionSelector","dividers","o","description","ModalsCompoment","newFolderName","newFileName","newName","secretShare","sharePwd","downloadURL","remoteDownloadPathSelect","purchaseCallback","handleInputChange","setState","newNameSuffix","UNSAFE_componentWillReceiveProps","nextProps","dndSignale","modalsStatus","rename","dragMove","submitRemove","delete","submitResave","shareKey","submitMove","patch","DragSelectedPath","doMove","submitRename","new_name","submitCreateNewFolder","submitCreateNewFile","submitTorrentDownload","submitDownload","failed","r","setMoveTarget","remoteDownloadNext","copySource","getSource","PurchaseShare","createNewFolder","onSubmit","createNewFile","copy","move","resave","remove","music","controls","remoteDownload","placeholder","torrentDownload","decompress","compress","relocate","Component","Modals","connect","withRouter","sizeToString","bytes","i","floor","log","pow","toFixed","fixUrlHash","setGetParameter","paramName","paramValue","indexOf","prefix","substring","suffix","history","pushState","changeThemeColor","document","querySelector","setAttribute","bufferDecode","Uint8Array","from","atob","charCodeAt","bufferEncode","btoa","String","fromCharCode","apply","replace","pathBack","folders","filePath","hex2bin","hex","padStart","basename","pathList","filename","fileNameNoExt","lastIndexOf","randomStr","result","characters","charactersLength","charAt","getNumber","base","conditions","isMac","platform","toUpperCase","isMobileSafari","ua","userAgent","iOS","match","webkit","vhCheck","vh","innerHeight","documentElement","setProperty","layout","up","player","borderRadius","overflowX","TextViewer","setContent","setStatus","math","useRouteMatch","$vm","createRef","useLocation","query","URLSearchParams","useParams","UseFileSubTitle","requestURL","responseType","textdata","Buffer","params","toBase64","reader","FileReader","readAsDataURL","onload","onerror","save","addImg","$file","$img2Url","console","elevation","ref","onSave","toolbar","h1","h2","h3","h4","img","link","expand","undo","redo","subfield","MonacoEditor","lazy","editor","formControl","toobar","textAlign","CodeViewer","setSuffix","wordWrap","setWordWrap","extension","codePreviewSuffix","Array","Set","keys","fallback","language","readOnly","extraEditorClassName","UploaderErrorName","RETRY_ERROR_LIST","FailedCreateUploadSession","HTTPRequestFailed","LocalChunkUploadFailed","SlaveChunkUploadFailed","RequestCanceled","ProcessingTaskDuplicated","FailedTransformResponse","RETRY_CODE_LIST","UploaderError","i18n","field","InvalidFile","UnknownPolicyError","UnknownPolicyType","APIError","CreateUploadSessionError","DeleteUploadSessionError","FailedDeleteUploadSession","axiosErr","LocalChunkUploadError","chunkIndex","SlaveChunkUploadError","OneDriveChunkError","OneDriveChunkUploadFailed","OneDriveEmptyFileSelected","OneDriveEmptyFile","OneDriveFinishUploadError","FailedFinishOneDriveUpload","S3LikeChunkError","S3LikeChunkUploadFailed","getElementsByTagName","innerHTML","S3LikeFinishUploadError","QiniuChunkError","QiniuChunkUploadFailed","QiniuFinishUploadError","FailedFinishQiniuUpload","COSUploadError","COSPostUploadFailed","COSUploadCallbackError","COSUploadCallbackFailed","UpyunUploadError","UpyunPostUploadFailed","S3LikeUploadCallbackError","S3LikeUploadCallbackFailed","parseError","variantIcon","success","CheckCircleIcon","warning","WarningIcon","ErrorIcon","info","InfoIcon","MySnackbarContentWrapper","main","iconVariant","Icon","aria-describedby","close","SnackbarCompoment","snackbar","toggle","autoHideDuration","AlertBar","getChunks","chunkByteSize","chunks","count","chunk","sumChunk","reduce","loaded","getResumeCtxKey","setResumeCtx","logger","ctxKey","warn","WriteCtxFailed","removeResumeCtx","removeItem","RemoveCtxFailed","cleanupResumeCtx","getResumeCtx","localInfoString","ReadCtxFailed","localInfo","InvalidCtxData","session","Date","now","CtxExpired","listResumeCtx","res","len","OBJtoXML","obj","xml","isArray","array","getFileInput","isFolder","createElement","multiple","body","appendChild","pathJoin","parts","sep","part","RegExp","trimPrefix","getDirectoryUploadDst","relPath","webkitRelativePath","fsPath","readEntriesPromise","directoryReader","readEntries","readFilePromise","fileReader","readAllDirectoryEntries","entries","getAllFileEntries","dataTransferItemList","fileEntries","webkitGetAsEntry","getAsFile","entry","shift","isFile","fullPath","isDirectory","createReader","isFileDrop","dataTransfer","types","UserAvatarPopoverCompoment","openURL","sigOut","reload","user","Popover","visitorMenu","registerEnabled","largeAvatarContainer","Avatar","largeAvatar","noWrap","nickname","user_name","Chip","UserAvatarPopover","userPopoverAnchorEl","UserAvatarCompoment","showUserInfo","returnHome","loginCheck","isLogin","mobileHidden","Grow","Home","UserAvatar","NavbarCompoment","componentDidMount","handleDrawerToggle","mobileOpen","openDownload","startDownload","archiveDownload","startBatchDownload","signOut","finally","UploaderRef","unlisten","listen","drawer","upDrawer","minStickDrawer","iconFix","process","browser","test","appBar","menuButton","handleDesktopToggle","desktopOpen","menuButtonDesktop","menuIcon","setSelectedTarget","subTitle","grow","sectionForFile","isPreviewable","openPreview","disableClickAway","audioPreviewPlayingName","audioPreviewOpen","smUp","implementation","container","paper","drawerPaper","onOpen","disableDiscovery","ModalProps","keepMounted","xsDown","drawerPaperDesktop","drawerOpen","drawerClose","Navbar","loadUploader","audioPreviewIsOpen","withTheme","flexShrink","drawerDesktop","mixins","flexDirection","justifyContent","transition","transitions","easing","sharp","duration","enteringScreen","leavingScreen","flexGrow","nested","paddingLeft","extendedIcon","addButton","marginBottom","fabButton","badgeFix","dividerFix","folderShareIcon","verticalAlign","shareInfoContainer","textDecoration","shareAvatar","stickFooter","ownerInfo","overflowY","configure","ignoreTags","keyMap","SEARCH","SearchBarCompoment","handlers","searchShare","blur","cancelSuggest","searchIcon","inputRoot","inputInput","onBlur","suggestBox","TransitionProps","timeout","square","SearchBar","shape","fade","common","white","pointerEvents","paddingTop","paddingRight","paddingBottom","StorageBarCompoment","percent","used","total","showExpand","firstLoad","updateStatus","refresh","onMouseEnter","onMouseLeave","storageContainer","detail","bar","StorageBar","storageRefresh","textFix","textOverflow","UserInfoCompoment","userNav","flexAvatar","avatarImg","storageCircle","nickName","groupName","UserInfo","backgroundImage","backgroundSize","minHeight","transform","hiddenButton","subMenu","overFlow","whiteSpace","icons","Circle","CircleOutline","Heart","HeartOutline","Hexagon","HexagonOutline","Hexagram","HexagramOutline","Rhombus","RhombusOutline","Square","SquareOutline","Triangle","TriangleOutline","FolderHeartOutline","AddTag","FileTag","useHistory","tagOpen","setTagOpen","addTagModal","setAddTagModal","tagHover","setTagHover","tags","setTags","SearchMyFile","p","NavigateTo","onSuccess","tag","newTags","iconVideo","iconImg","iconAudio","iconDoc","expression","IconComponent","getIcon","Crc32","crc","table","offset","prototype","j","t","getDataHelper","byteLength","uint8","view","DataView","buffer","ZIP","underlyingSource","ctrl","activeZipObject","closed","files","filenames","encoder","TextEncoder","activeZipIndex","next","processNextChunk","closeZip","zipWriter","enqueue","fileLike","TypeError","trim","lastModified","directory","endsWith","nameBuf","encode","zipObject","level","comment","compressedLength","uncompressedLength","writeHeader","setUint16","setUint32","getHours","getMinutes","getSeconds","getFullYear","getMonth","getDate","writeFooter","footer","indexFilename","setUint8","zipObj","read","done","outputData","append","stream","getReader","ReadableStream","start","pull","getPreviewPath","walk","f","objects","subs","setFileList","setDirList","setSortMethod","setSideBar","setCurrentPolicy","removeSelectedTargets","addSelectedTargets","setLastSelect","setShiftSelectedIds","sortMethodFuncs","sizePos","b","sizeRes","namePos","localeCompare","languages","numeric","ignorePunctuation","nameRev","timePos","timeRev","modifyTimePos","modifyTimeRev","selectAll","updateFileList","sortMethod","x","sortFunc","sort","toggleObjectInfoSidebar","closeContextMenu","serverSideBatchDownload","postBody","shareDownload","allowArchiveDownload","fileStream","streamSaver","createWriteStream","readableZipStream","previewPath","fetch","cache","WritableStream","pipeTo","getViewerURL","viewer","openViewer","selectFile","fileIndex","ctrlKey","metaKey","shiftKey","isMacbook","all","begin","end","newShiftSelected","encodings","encoding","encodingRequired","allOptions","batchGetSource","sourceBatch","ImagPreviewComponent","photoIndex","firstOne","newImg","intro","fileType","toLowerCase","imgPreviewSuffix","images","visible","onIndexChange","n","ImgPreivew","msDocPreviewSuffix","subtitleSuffix","audioPreviewSuffix","videoPreviewSuffix","pdfPreviewSuffix","editSuffix","epubSuffix","json","php","py","bat","cpp","h","cs","css","dockerfile","go","html","ini","java","js","jsx","less","lua","sh","sql","yaml","mediaType","audio","video","image","pdf","word","ppt","excel","torrent","zip","excute","android","python","epub","policyTypeMap","local","remote","qiniu","upyun","oss","cos","onedrive","s3","isTorrent","isCompressFile","taskStatus","taskType","taskProgress","getTaskStatus","getTaskType","getTaskProgress","PolicyType","TaskType","Status","Logger","allowLevel","args","getPrintPrefix","createUploadSession","req","cancel","cancelToken","localUploadChunk","sessionID","onProgress","headers","onUploadProgress","progressEvent","slaveUploadChunk","credential","Authorization","oneDriveUploadChunk","range","finishOneDriveUpload","s3LikeUploadChunk","etag","s3LikeFinishUpload","isOss","PartNumber","ETag","validateStatus","qiniuDriveUploadChunk","upToken","authorization","qiniuFinishUpload","partNumber","cosFormUploadChunk","keyTime","ak","bodyFormData","FormData","cosUploadCallback","upyunFormUploadChunk","s3LikeUploadCallback","resumePolicy","Base","manager","child","added","subscriber","progress","lastTime","startTime","subscribe","transit","initialized","setError","queued","pool","preparing","cachedInfo","utils","policy_id","last_modified","token","resumed","chunkProgress","upload","afterUpload","finished","cancelUploadSession","canceled","reset","deleteUploadSession","onTransition","newStatus","onError","onMsg","Retryable","fromCache","SelectType","Chunk","initBeforeUploadChunks","updateLocalCache","uploadChunk","chunkSize","notifyResumeProgress","getProgressInfoItem","Local","chunkInfo","updateChunkProgress","Remote","uploadURLs","OneDrive","rangeEnd","sendRange","innererror","alignChunkOffset","chunkOffset","rangeStatus","expectedStart","nextExpectedRanges","newChunkOffset","finishing","OSS","completeURL","Qiniu","chunkRes","COS","Upyun","ResumeHint","resumable","UploadManager","fileInput","directoryInput","currentPath","changeConcurrentLimit","newLimit","File","NoPolicySelected","onchange","ev","fileSelectCallback","click","resumeTasks","tasks","dispatchUploader","resumeHint","cleanupSessions","Event","onFileDroppedIn","onDropLeave","uploaders","onDropFileAdded","logLevel","concurrentLimit","dropZone","onDropOver","S3","acceptVal","removeAttribute","UploadButton","setOpen","setQueued","OpenNewFolderDialog","OpenNewFileDialog","Queued","uploadClicked","openFileList","circularProgress","useMemo","totalSize","processedSize","taskListOpen","Badge","badgeContent","invisible","Backdrop","SpeedDial","ariaLabel","tooltipTitle","SpeedDialIcon","openIcon","FabProps","SpeedDialAction","tooltipOpen","Directory","infoTitle","fontWeight","infoValue","wordBreak","TaskDetail","navigateToDst","Link","datetime","locale","Grid","xs","progressContent","progressContainer","listAction","successStatus","errorStatus","disabledBadge","dstLink","fileNameContainer","getErrMsg","errMsg","Message","UploadTask","useAvgSpeed","onCancel","onRefresh","taskHover","setTaskHover","startLoadedRef","setProgress","durationTotal","resAvg","speed","speedAvg","retry","useUpload","fullScreen","useMediaQuery","statusText","parent","useSpeedAvg","displayedSpeed","getSpeedText","resumeLabel","continueLabel","progressBar","lighten","darken","taskDetail","u","stopRipple","stopPropagation","secondaryAction","show","onTouchStart","fileIcon","TypeIcon","isUpload","newExpanded","onMouseOver","ConcurrentOptionDialog","setCount","Input","step","MoreActions","uploadManager","deleteTask","setUseAvgSpeed","setFilter","sorter","setSorter","cleanFinished","concurrentDialog","setConcurrentDialog","RefreshStorage","listItems","tooltip","divider","ClearAll","Menu","enterNextDelay","dense","val","Transition","forwardRef","Slide","direction","rootOverwrite","flex","popup","inset","paddingZero","dialogContent","virtualList","expandIcon","shortest","expandIconExpanded","sorters","reverse","filters","ongoing","TaskList","taskList","setUploaders","refreshList","setRefreshList","Fade","currentList","Nothing","increaseViewportBy","itemContent","classnames","TransitionComponent","disableEnforceFocus","hideBackdrop","disableBackdropClick","disableScrollLock","Accordion","AppBar","Toolbar","disableGutters","MoreHoriz","AccordionDetails","createStyles","backdrop","DropFileBackground","totalProgressCollector","lastProgressStart","Uploader","setTaskListOpen","dropBgOpen","setDropBgOpen","processed","totalProgress","setTotalProgress","fileSelectCounter","openFileSelector","folderSelectCounter","openFolderSelector","enableUploader","taskAdded","original","onToast","setPolicy","unfinished","setInterval","dayjs","extend","utc","timezone","preferTimeZone","timeZone","refreshTimeZone","formatLocalTime","time","format","tz","validateTimeZone","changeSubTitle","setSubtitle","setShareInfo","AudioIcon","VideoIcon","ImageIcon","PdfIcon","FileWordBox","FilePowerpointBox","FileExcelBox","ScriptText","MagnetOn","ZipBox","WindowRestore","Android","FileShowIcon","LanguagePhp","LanguageGo","LanguagePython","LanguageC","LanguageCpp","LanguageJavascript","MenuBook","fileSuffix","getColor","getColorValue","iconClassName","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","isLocalhost","hostname","AuthRoute","rest","render","NoAuthRoute","PageLoading","emptyContainer","emptyInfoBig","Notice","icp","ICPFooter","siteICPId","setShow","pageHelper","rel","primaryColor","secondaryColor","y","rx","ry","captchaPlacholder","NormalCaptcha","captchaRef","useStyle","captcha","setCaptcha","captchaData","setCaptchaData","refreshCaptcha","captchaCode","captchaContainer","required","autoComplete","captchaPlaceholder","alt","ReCAPTCHA","handleExpired","bind","handleErrored","handleRecaptchaRef","grecaptcha","_widgetId","getResponse","execute","_executeRequested","onExpired","onErrored","sitekey","tabindex","stoken","hl","explicitRender","delayOfCaptchaIframeRemoving","temporaryNode","firstChild","removeChild","elem","childProps","displayName","defaultProps","makeAsyncScriptLoader","callbackName","globalName","Recaptcha","reCaptchaKey","captcha_ReCaptchaKey","ReCaptcha","TCaptcha","isValidateRef","submitRef","appid","tcaptcha_captcha_app_id","onLoad","TencentCaptcha","ret","ticket","randstr","isValidate","submit","defaultValidate","useCaptcha","captchaType","captcha_type","captchaLoading","setCaptchaLoading","captchaRefreshRef","normal","captchaParamsRef","CaptchaRender","useNormalCaptcha","recaptcha","useRecaptcha","tcaptcha","useTCaptcha","form","buttonContainer","authnLink","LoginForm","email","setEmail","pwd","setPwd","useAuthn","setUseAuthn","twoFA","setTwoFA","faCode","setFACode","loginCaptcha","QQLogin","authn","ApplyThemes","SetSessionStatus","afterLogin","Paper","login","userName","Password","credentials","credentialRequestOptions","publicKey","challenge","allowCredentials","listItem","assertion","authData","authenticatorData","clientDataJSON","rawId","sig","signature","userHandle","Fingerprint","VpnKey","expandMore","active","textTransform","PathButton","inputRef","useDrop","accept","drop","more","collect","monitor","isOver","canDrop","isActive","last","DropDownItem","setActiveStatus","DropDown","timer","clearTimeout","shouldClose","NavigatorComponent","currentID","hiddenFolders","hiddenMode","anchorHidden","URL","searchParams","renderPath","onpopstate","navigateToPath","max_size","file_type","checkOverFlow","redresh","componentDidUpdate","prevProps","prevStates","ms","drawerDesktopOpen","force","overflowInitLock","hasOverflowingChildren","offsetHeight","scrollHeight","offsetWidth","scrollWidth","showHiddenPath","performAction","newTarget","presentFolderMenu","disableAutoFocusItem","Archive","roundBorder","navigatorContainer","nav","rightIcon","optionContainer","Navigator","highlight","FileName","highlightClassName","searchWords","autoEscape","textToHighlight","SmallIconCompoment","nextState","nextContext","isSelectedCurrent","isSelectedNext","isSelected","ButtonBase","focusRipple","notSelected","onIconClick","iconSelected","iconNotSelected","checkIcon","folderName","folderNameSelected","folderNameNotSelected","SmallIcon","boxSizing","FileIconCompoment","showPicIcon","pic","picPreview","noDrag","afterLoad","beforeLoad","loadingAnimation","previewIcon","iconBig","fileInfo","shareFix","FileIcon","objectFit","userDrag","Folder","dragging","cardDragged","diliverIcon","object","Preview","card","layerStyles","getItemStyles","initialOffset","currentOffset","pointerOffset","WebkitTransform","CustomDragLayer","useDragLayer","itemType","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getInitialClientOffset","isDragging","TableRowCompoment","tableIcon","TableRow","pref","onContextMenu","contextMenu","handleClick","onDoubleClick","handleDoubleClick","selectedShared","TableCell","dref","scope","tableRow","hideAuto","TableItem","hover","userSelect","FolderDropWarpper","isListView","useDragScrolling","isScrolling","goDown","isScrollEnd","requestAnimationFrame","goUp","throttleOnDragOver","throttle","isMouseOnTop","clientY","isMouseOnDown","addEventListenerForWindow","removeEventListenerForWindow","removeEventListener","fixFlex","ObjectIcon","navigatorPath","ContextMenu","SetSelectedTarget","NavitateTo","DragAndDrop","OpenPreview","StartDownload","SelectFile","enterFolder","handleIconClick","useDrag","dropResult","getDropResult","canDrag","drag","getEmptyImage","captureDraggingState","StyledListItemIcon","ContextMenuCompoment","X","Y","setPoint","clientX","openArchiveDownload","renderMenuItems","visibleCount","condition","allowRemoteDownload","menuOpen","anchorReference","anchorPosition","Unarchive","InfoOutlined","propover","contextType","contextOpen","rootTable","typeHeader","errorBox","errorMsg","flexFix","upButton","clickAway","rootShare","visuallyHidden","clip","gridContainer","gridTemplateColumns","gridItem","DELETE_FILE","SELECT_ALL_SHOWED","SELECT_ALL","DESELECT_ALL","Explorer","navigatorErrorMsg","navigatorError","OpenRemoveDialog","ChangeContextMenu","SelectAll","page_size","page_number","startIndex","usePagination","showView","listView","Table","TableHead","TableSortLabel","TableBody","normalView","data-clickAway","dataset","clickaway","allowChanges","ListLoading","drawerContainer","placeContent","fileIconSVG","folderIcon","closeIcon","placeSelf","propsContainer","propsLabel","propsTime","propsValue","SideDrawer","SetSideBar","setTarget","details","setDetails","propsItem","d","toLocaleString","child_folder_num","child_file_num","updated_at","created_at","query_date","Hidden","Clear","Drawer","gutterBottom","CustomPaginationItem","PaginationItem","PaginationFooter","SetPagination","Pagination","renderItem","FileManager","DndProvider","backend","HTML5Backend","DragLayer","SelectMenu","showIcon","Artplayer","externalPlayers","actionButton","VideoViewer","art","setArt","setFiles","subtitles","setSubtitles","playlist","setPlaylist","subtitleOpen","setSubtitleOpen","subtitleSelected","setSubtitleSelected","playlistOpen","setPlaylistOpen","externalPlayerOpen","setExternalPlayerOpen","autoHeight","pictureInPictureEnabled","playing","pip","pause","newURL","subtitle","switchUrl","switchSubtitle","switch","flip","setting","playbackRate","aspectRatio","hotkey","fullscreen","fullscreenWeb","whitelist","moreVideoAttr","playsInline","getInstance","startIcon","Subtitles","PlaylistPlay","Launch","sub","cardContainer","shareTitle","avatarFile","avatarFolder","gird","loadMore","orderSelect","SearchResult","setPage","setTotal","shareList","setShareList","orderBy","setOrderBy","order","sm","Card","CardHeader","subheader","MyShareCompoment","showPwd","loadList","removeShare","oldList","changePermission","newPwd","shareIndex","changePreviewOption","handlePageChange","handleOrderChange","isExpired","remain_downloads","CardActions","disableActionSpacing","MyShare","SelectFileDialog","FormGroup","row","FormControlLabel","filesCopy","iconContainer","borderInlineStart","contentSide","iconMultiple","subFileName","subFileIcon","scroll","bitmap","DownloadingCard","canvasRef","setTask","selectDialogOpen","setSelectDialogOpen","selectFileOption","setSelectFileOption","bitfield","str","canvas","context","getContext","clearRect","strokeStyle","bit","round","numPieces","beginPath","moveTo","lineTo","stroke","getPercent","completed","activeFiles","getDownloadName","bittorrent","mode","gid","indexes","CardContent","LinearProgress","downloaded","completedLength","newIndex","newFiles","deleteFile","HighlightOff","update","uploadLength","uploadSpeed","infoHash","numSeeders","seeder","pieceLength","FinishedCard","task_status","getTaskError","task_error","RemoteDownloadButton","OpenRemoteDownloadDialog","Fab","Add","DownloadComponent","interval","previousDownloading","downloading","finishedList","continue","loadDownloading","Download","LockedFileCompoment","setPassowrd","LockedFile","marginRottom","boxHeader","cursor","shareDes","Creator","userProfile","views","ImgPreview","SharedFileCompoment","scoreHandler","download","box","boxContent","fileSize","boxFooter","actionLeft","openResave","downloadButton","SharedFile","fileCotainer","buttonCotainer","ReadMe","SharedFolderComponent","handleClickAway","ignore","readmeShowed","ClickAwayListener","onClickAway","managerContainer","SharedFolder","shareUserPopoverAnchorEl","SharePreload","setShare","setPassword","SetSubTitle","locked","withPassword","DocViewer","setURL","QuotaCompoment","basic","pack","r1","r2","r3","packs","usedR","baseR","packR","proBar","r1_block","note_block","r2_block","r3_block","align","activate_date","expiration","expiration_date","Quota","lineHeight","float","PackSelect","boxHead","packName","price","priceWithScore","boxBottom","BuyQuotaCompoment","IntervalId","confirmRedeem","redeemCode","doRedeem","redeemInfo","buyPack","packType","selectedPack","packPayMethod","groups","selectedGroup","num","scoreNum","times","payment","qr_code","querryLoop","clearInterval","handleChangeIndex","handleTexyChange","selectPack","selectGroup","selectPackPayMethod","scorePrice","alipay","payjs","wechat","score_price","methodSelect","FormLabel","RadioGroup","Radio","textField","Tabs","Tab","AccountBalanceWallet","md","payMethod","priceShow","tier","titleTypographyProps","subheaderTypographyProps","cardHeader","cardPricing","line","cardActions","redeemContainer","codeContainer","BuyQuota","grey","formGroup","formIcon","CreateWebDAVAccount","setValue","pathSelectDialog","setPathSelectDialog","formContainer","LabelOutlined","FolderOpenOutlined","CreateWebDAVMount","Storage","cardContent","tableContainer","WebDAV","tab","setTab","setCreate","mount","setMount","accounts","setAccounts","setFolders","account","ID","CreatedAt","Name","Root","mountInfo","indicatorColor","textColor","newValue","Alert","severity","TableContainer","accountCopy","deleteAccount","policy_name","folderCopy","deleteMount","Tasks","setTasks","nowrap","getError","ProfileCompoment","listType","loadNext","loadPrev","avatarContainer","centered","infoContainer","infoItem","mobileHide","th","tableLink","Profile","backgroundPosition","borderRaidus","pageInfo","sectionTitle","desenList","flexContainer","Authn","setSelected","confirm","setConfirm","deleteCredential","fingerprint","credentialCreationOptions","excludeCredentials","attestationObject","add","TimeZoneDialog","timeZoneValue","setTimeZoneValue","smsCode","sendButton","BindPhone","countdownTimer","countdownSecond","phone","setPhone","verifyCode","setVerifyCode","countdown","setCountdown","UserSettingCompoment","avatarModal","nickModal","changePassword","oldPwd","webdavPwd","newPwdRepeat","twoFactor","authCode","changeTheme","chosenTheme","showWebDavUrl","showWebDavUserName","changeWebDavPwd","groupBackModal","changeTimeZone","bindPhone","settings","uid","group_expires","qq","homepage","two_factor","two_fa_secret","prefer_theme","themes","changeView","loadSetting","doChangeGroup","useGravatar","changeNick","bindQQ","uploadAvatar","formData","handleToggle","changhePwd","old","new","init2FA","handleAlignment","toggleThemeMode","newMode","ListItemAvatar","infoTextWithIcon","rightIconWithText","infoText","ConfirmationNumber","Switch","firstColor","secondColor","Brightness3","ListAlt","Schedule","webdav","userGravatar","paddingText","flexContainerResponse","qrcode","desText","ToggleButtonGroup","exclusive","ToggleButton","themeBlock","UserSetting","yellow","QQCallback","setMsg","avatarSuccess","Register","password_repeat","setInput","emailActive","setEmailActive","regCaptcha","Activation","setSuccess","ResetForm","secret","Reset","forgetCaptcha","overflowWrap","SiteNotice","site_notice","newNotice","dangerouslySetInnerHTML","__html","MusicPlayerComponent","currentIndex","currentTime","progressText","looptype","myAudioRef","newItem","handleItemClick","backgroundPlay","bindEvents","ele","readyPlay","loopnext","timeUpdate","unbindEvents","play","formatTime","isNaN","minute","second","playOrPaues","isPlay","changeLoopType","lt","handleProgress","idx","Slider","slider_root","justify","Repeat","RepeatOne","Shuffle","MusicPlayer","ReactReader","m","EpubViewer","currentLocation","setLocation","fileUrl","locationChanged","epubcifi","epubInitOptions","openAs","showToc","PDFViewer","App","themeConfig","prefersDarkMode","prefer","createMuiTheme","Fragment","ThemeProvider","CssBaseline","exact","Text","Code","initUserConfig","store","defaultTheme","preferListMethod","share_view_method","home_view_method","doNavigate","currntPath","defaultStatus","rawStore","configCache","InitSiteConfig","black","contrastText","hint","bgSelected","emptyIcon","ErrorBoundary","hasError","errorInfo","componentStack","Admin","hash","origin","contentType","ready","unregister","checkValidServiceWorker","alert","waiting","postMessage","createBrowserHistory","reduxEnhance","applyMiddleware","routerMiddleware","thunk","createStore","viewUpdateState","explorerState","appState","cloudreveApp","combinedState","combinedReducer","combine","namespace","reducer","invariant","combineReducers","connectRouter","UpdateSiteConfig","ReactDOM","getElementById","emptyInfoSmall","PathSelectorCompoment","selectedTarget","toBeLoad","back","paths","api","unshift","handleSelect","selector","primaryTypographyProps","buttonIcon","iconWhite","setTitle","setPath"],"mappings":"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","file":"static/js/main.f068d422.chunk.js","sourcesContent":["import axios from \"axios\";\nimport Auth from \"./Auth\";\n\nexport const baseURL = \"/api/v3\";\n\nexport const getBaseURL = () => {\n return baseURL;\n};\n\nexport const getPreviewURL = (\n isShare: boolean,\n shareID: any,\n fileID: any,\n path: any\n): string => {\n return (\n getBaseURL() +\n (isShare\n ? \"/share/preview/\" +\n shareID +\n (path !== \"\" ? \"?path=\" + encodeURIComponent(path) : \"\")\n : \"/file/preview/\" + fileID)\n );\n};\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n// @ts-ignore\nconst instance = axios.create({\n baseURL: getBaseURL(),\n withCredentials: true,\n});\n\nclass AppError extends Error {\n constructor(message: string | undefined, public code: any, error: any) {\n super(message);\n this.code = code;\n this.message = message || \"未知错误\";\n this.message += error ? \" \" + error : \"\";\n this.stack = new Error().stack;\n }\n}\n\ninstance.interceptors.response.use(\n function (response: any) {\n response.rawData = response.data;\n response.data = response.data.data;\n if (\n response.rawData.code !== undefined &&\n response.rawData.code !== 0 &&\n response.rawData.code !== 203\n ) {\n // 登录过期\n if (response.rawData.code === 401) {\n Auth.signout();\n window.location.href = \"/login\";\n }\n\n // 非管理员\n if (response.rawData.code === 40008) {\n window.location.href = \"/home\";\n }\n\n // 未按要求绑定手机\n if (response.rawData.code === 40010) {\n window.location.href = \"/setting?modal=phone\";\n }\n throw new AppError(\n response.rawData.msg,\n response.rawData.code,\n response.rawData.error\n );\n }\n return response;\n },\n function (error) {\n return Promise.reject(error);\n }\n);\n\nexport default instance;\n","import React from \"react\";\nimport { Code } from \"react-content-loader\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n loader: {\n width: \"70%\",\n padding: 40,\n [theme.breakpoints.down(\"md\")]: {\n width: \"100%\",\n padding: 10,\n },\n },\n}));\n\nconst MyLoader = (props) => (\n \n);\n\nfunction TextLoading() {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n\nexport default TextLoading;\n","import React, { useEffect, useState } from \"react\";\nimport Zoom from \"@material-ui/core/Zoom\";\n\nfunction AutoHidden({ children, enable, hide = false, element = null }) {\n const [hidden, setHidden] = useState(false);\n let prev = window.scrollY;\n let lastUpdate = window.scrollY;\n const show = 50;\n\n useEffect(() => {\n const handleNavigation = (e) => {\n const window = e.currentTarget;\n const current = element ? element.scrollTop : window.scrollY;\n\n if (prev > current) {\n if (lastUpdate - current > show) {\n lastUpdate = current;\n setHidden(false);\n }\n } else if (prev < current) {\n if (current - lastUpdate > show) {\n lastUpdate = current;\n setHidden(true);\n }\n }\n prev = current;\n };\n if (enable) {\n const target = element ? element : window;\n target.addEventListener(\"scroll\", (e) => handleNavigation(e));\n }\n // eslint-disable-next-line\n }, [enable]);\n\n return {children};\n}\n\nexport default AutoHidden;\n","/* eslint-disable no-case-declarations */\nimport { AnyAction } from \"redux\";\nimport { CloudreveFile } from \"../../types\";\nimport { Policy } from \"../../component/Uploader/core/types\";\n\ninterface SelectProps {\n isMultiple: boolean;\n withFolder: boolean;\n withFile: boolean;\n withSourceEnabled: boolean;\n}\n\nexport interface ExplorerState {\n dndSignal: boolean;\n dndTarget: any;\n dndSource: any;\n fileList: CloudreveFile[];\n dirList: CloudreveFile[];\n selected: CloudreveFile[];\n selectProps: SelectProps;\n lastSelect: {\n file: CloudreveFile;\n index: number;\n };\n shiftSelectedIds: string[];\n imgPreview: {\n first: CloudreveFile;\n other: [];\n };\n audioPreview: {\n first: CloudreveFile;\n other: [];\n playingName: any;\n paused: boolean;\n isOpen: boolean;\n };\n search?: {\n keywords: string;\n searchPath: string;\n };\n fileSave: boolean;\n sideBarOpen: boolean;\n currentPolicy?: Policy;\n purchase?: {\n callback: any;\n onClose: any;\n score: number;\n };\n}\n\nexport const initState: ExplorerState = {\n dndSignal: false,\n dndTarget: null,\n dndSource: null,\n fileList: [],\n dirList: [],\n selected: [],\n selectProps: {\n isMultiple: false,\n withFolder: false,\n withFile: false,\n withSourceEnabled: false,\n },\n lastSelect: {\n file: {\n id: \"\",\n name: \"\",\n size: 0,\n type: \"file\",\n date: \"\",\n path: \"\",\n create_date: \"\",\n },\n index: -1,\n },\n shiftSelectedIds: [],\n imgPreview: {\n first: {\n id: \"\",\n name: \"\",\n size: 0,\n type: \"file\",\n date: \"\",\n path: \"\",\n create_date: \"\",\n },\n other: [],\n },\n audioPreview: {\n first: {\n id: \"\",\n name: \"\",\n size: 0,\n type: \"file\",\n date: \"\",\n path: \"\",\n create_date: \"\",\n },\n other: [],\n playingName: null,\n paused: false,\n isOpen: false,\n },\n fileSave: false,\n sideBarOpen: false,\n};\n\nconst checkSelectedProps = (selected: CloudreveFile[]): SelectProps => {\n const isMultiple = selected.length > 1;\n let withFolder = false;\n let withFile = false;\n let withSourceEnabled = false;\n selected.forEach((value) => {\n if (value.type === \"dir\") {\n withFolder = true;\n withSourceEnabled = true;\n } else if (value.type === \"file\") {\n withFile = true;\n if (value.source_enabled) {\n withSourceEnabled = true;\n }\n }\n });\n return {\n isMultiple,\n withFolder,\n withFile,\n withSourceEnabled,\n };\n};\n\nconst explorer = (\n state: ExplorerState = initState,\n action: AnyAction\n): ExplorerState => {\n switch (action.type) {\n case \"DRAG_AND_DROP\":\n return Object.assign({}, state, {\n dndSignal: !state.dndSignal,\n dndTarget: action.target,\n dndSource: action.source,\n });\n case \"SET_FILE_LIST\":\n return Object.assign({}, state, {\n fileList: action.list,\n });\n case \"SET_DIR_LIST\":\n return Object.assign({}, state, {\n dirList: action.list,\n });\n case \"ADD_SELECTED_TARGETS\":\n const addedSelected = [...state.selected, ...action.targets];\n return Object.assign({}, state, {\n selected: addedSelected,\n selectProps: checkSelectedProps(addedSelected),\n });\n case \"SET_SELECTED_TARGET\":\n const newSelected = action.targets;\n return Object.assign({}, state, {\n selected: newSelected,\n selectProps: checkSelectedProps(newSelected),\n });\n case \"RMOVE_SELECTED_TARGETS\":\n const { fileIds } = action;\n const filteredSelected = state.selected.filter((file) => {\n return !fileIds.includes(file.id);\n });\n return Object.assign({}, state, {\n selected: filteredSelected,\n selectProps: checkSelectedProps(filteredSelected),\n });\n case \"REFRESH_FILE_LIST\":\n return Object.assign({}, state, {\n selected: [],\n selectProps: {\n isMultiple: false,\n withFolder: false,\n withFile: false,\n withSourceEnabled: false,\n },\n });\n case \"SEARCH_MY_FILE\":\n return Object.assign({}, state, {\n selected: [],\n selectProps: {\n isMultiple: false,\n withFolder: false,\n withFile: false,\n withSourceEnabled: false,\n },\n search: {\n keywords: action.keywords,\n searchPath: action.path,\n },\n });\n case \"SHOW_IMG_PREIVEW\":\n return Object.assign({}, state, {\n imgPreview: {\n first: action.first,\n other: state.fileList,\n },\n });\n case \"SHOW_AUDIO_PREVIEW\":\n return Object.assign({}, state, {\n audioPreview: {\n ...state.audioPreview,\n first: action.first,\n other: state.fileList,\n },\n });\n case \"AUDIO_PREVIEW_SET_IS_OPEN\":\n return Object.assign({}, state, {\n audioPreview: {\n ...state.audioPreview,\n isOpen: action.isOpen,\n },\n });\n case \"AUDIO_PREVIEW_SET_PLAYING\":\n return Object.assign({}, state, {\n audioPreview: {\n ...state.audioPreview,\n playingName: action.playingName,\n paused: action.paused,\n },\n });\n case \"SAVE_FILE\":\n return {\n ...state,\n fileSave: !state.fileSave,\n };\n case \"SET_LAST_SELECT\":\n const { file, index } = action;\n return {\n ...state,\n lastSelect: {\n file,\n index,\n },\n };\n case \"SET_SHIFT_SELECTED_IDS\":\n const { shiftSelectedIds } = action;\n return {\n ...state,\n shiftSelectedIds,\n };\n case \"SET_NAVIGATOR\":\n return {\n ...state,\n selected: [],\n selectProps: {\n isMultiple: false,\n withFolder: false,\n withFile: false,\n withSourceEnabled: false,\n },\n search: undefined,\n };\n case \"SET_SIDE_BAR\":\n return {\n ...state,\n sideBarOpen: action.open,\n };\n case \"SET_CURRENT_POLICY\":\n return {\n ...state,\n currentPolicy: action.policy,\n };\n case \"CONFIRM_PURCHASE\":\n return {\n ...state,\n purchase: action.purchase,\n };\n default:\n return state;\n }\n};\n\nexport default explorer;\n","import { ThunkAction } from \"redux-thunk\";\nimport Auth from \"../../middleware/Auth\";\nimport pathHelper from \"../../utils/page\";\nimport { closeAllModals, confirmPurchase, toggleSnackbar } from \"./index\";\nimport { setOptionModal } from \"../viewUpdate/action\";\n\nexport const askForOption = (\n options: any,\n title: string\n): ThunkAction => {\n return async (dispatch, getState): Promise => {\n return new Promise((resolve, reject) => {\n const dialog = {\n open: true,\n title: title,\n options: options,\n };\n dispatch(\n setOptionModal({\n ...dialog,\n onClose: () => {\n dispatch(setOptionModal({ ...dialog, open: false }));\n reject(\"用户拒绝\");\n },\n callback: (option: any) => {\n resolve(option);\n dispatch(setOptionModal({ ...dialog, open: false }));\n },\n })\n );\n });\n };\n};\n\nconst purchased = new Map();\n\nexport const trySharePurchase = (\n share: any\n): ThunkAction => {\n return async (dispatch, getState): Promise => {\n return new Promise((resolve, reject) => {\n const {\n router: {\n location: { pathname },\n },\n } = getState();\n if (pathHelper.isSharePage(pathname) && share && share.score > 0) {\n if (!Auth.Check()) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n \"登录后才能继续操作\",\n \"warning\"\n )\n );\n dispatch(closeAllModals());\n reject(\"未登录\");\n return;\n }\n\n if (\n !Auth.GetUser().group.shareFree &&\n !purchased.has(share.key)\n ) {\n dispatch(\n confirmPurchase({\n score: share.score,\n onClose: () => {\n dispatch(confirmPurchase(undefined));\n reject(\"用户拒绝\");\n },\n callback: () => {\n purchased.set(share.key, true);\n resolve();\n dispatch(confirmPurchase(undefined));\n },\n })\n );\n return;\n }\n }\n\n resolve();\n });\n };\n};\n","import API from \"../middleware/Api\";\n\nexport async function list(\n path: string,\n share: any,\n keywords: string,\n searchPath: string\n): Promise {\n let apiURL = \"\";\n if (share) {\n if (keywords === \"\") {\n apiURL = \"/share/list/\" + share.key;\n } else {\n apiURL = `/share/search/${share.key}/`;\n }\n } else {\n if (keywords === \"\") {\n apiURL = \"/directory\";\n } else {\n apiURL = \"/file/search/\";\n }\n }\n\n path = keywords === \"\" ? path : keywords;\n apiURL = apiURL + encodeURIComponent(path);\n if (searchPath) {\n apiURL = `${apiURL}?path=${encodeURIComponent(searchPath)}`;\n }\n return API.get(apiURL);\n}\n","const statusHelper = {\n isHomePage(path: string) {\n return path === \"/home\";\n },\n isSharePage(path: string) {\n return path && path.startsWith(\"/s/\");\n },\n isAdminPage(path: string) {\n return path && path.startsWith(\"/admin\");\n },\n isLoginPage(path: string) {\n return path && path.startsWith(\"/login\");\n },\n isMobile() {\n return window.innerWidth < 600;\n },\n};\nexport default statusHelper;\n","import Base from \"../uploader/base\";\nimport { ProcessingTaskDuplicatedError } from \"../errors\";\n\nexport interface QueueContent {\n uploader: Base;\n resolve: () => void;\n reject: (err?: any) => void;\n}\n\nexport class Pool {\n queue: Array = [];\n processing: Array = [];\n\n constructor(public limit: number) {}\n\n enqueue(uploader: Base) {\n return new Promise((resolve, reject) => {\n this.queue.push({\n uploader,\n resolve,\n reject,\n });\n this.check();\n });\n }\n\n release(item: QueueContent) {\n this.processing = this.processing.filter((v) => v !== item);\n this.check();\n }\n\n run(item: QueueContent) {\n this.queue = this.queue.filter((v) => v !== item);\n if (\n this.processing.findIndex(\n (v) =>\n v.uploader.task.dst == item.uploader.task.dst &&\n v.uploader.task.file.name == item.uploader.task.name\n ) > -1\n ) {\n // 找到重名任务\n item.reject(new ProcessingTaskDuplicatedError());\n this.release(item);\n return;\n }\n\n this.processing.push(item);\n item.uploader.run().then(\n () => {\n item.resolve();\n this.release(item);\n },\n (err) => {\n item.reject(err);\n this.release(item);\n }\n );\n }\n\n check() {\n const processingNum = this.processing.length;\n const availableNum = Math.max(0, this.limit - processingNum);\n this.queue.slice(0, availableNum).forEach((item) => {\n this.run(item);\n });\n }\n}\n","import * as actions from \"./action\";\nimport * as reducers from \"./reducer\";\nimport { setPagination } from \"../viewUpdate/action\";\n\nexport default {\n actions,\n reducers,\n};\nexport { selectFile } from \"./action\";\nexport { openPreview } from \"./action\";\nexport { setShiftSelectedIds } from \"./action\";\nexport { setLastSelect } from \"./action\";\nexport { setSelectedTarget } from \"./action\";\nexport { addSelectedTargets } from \"./action\";\nexport { removeSelectedTargets } from \"./action\";\nexport const setNavigator = (path: any, navigatorLoading: any) => {\n return {\n type: \"SET_NAVIGATOR\",\n path,\n navigatorLoading,\n };\n};\nexport const navigateTo = (path: any) => {\n return (dispatch: any, getState: any) => {\n const state = getState();\n const navigatorLoading = path !== state.navigator.path;\n if (navigatorLoading) {\n dispatch(\n setPagination({\n ...state.viewUpdate.pagination,\n page: 1,\n })\n );\n }\n dispatch(setNavigator(path, navigatorLoading));\n };\n};\nexport const navigateUp = () => {\n return (dispatch, getState) => {\n const state = getState();\n const pathSplit = state.navigator.path.split(\"/\");\n pathSplit.pop();\n const newPath = pathSplit.length === 1 ? \"/\" : pathSplit.join(\"/\");\n const navigatorLoading = newPath !== state.navigator.path;\n if (navigatorLoading) {\n dispatch(\n setPagination({\n ...state.viewUpdate.pagination,\n page: 1,\n })\n );\n }\n dispatch(setNavigator(newPath, navigatorLoading));\n };\n};\nexport const drawerToggleAction = (open) => {\n return {\n type: \"DRAWER_TOGGLE\",\n open: open,\n };\n};\nexport const dragAndDrop = (source, target) => {\n return {\n type: \"DRAG_AND_DROP\",\n source: source,\n target: target,\n };\n};\nexport const changeViewMethod = (method) => {\n return {\n type: \"CHANGE_VIEW_METHOD\",\n method: method,\n };\n};\nexport const toggleDaylightMode = () => {\n return {\n type: \"TOGGLE_DAYLIGHT_MODE\",\n };\n};\n// Deprecated\nexport const changeContextMenu = (type, open) => {\n return {\n type: \"CHANGE_CONTEXT_MENU\",\n menuType: type,\n open: open,\n };\n};\nexport const setNavigatorLoadingStatus = (status) => {\n return {\n type: \"SET_NAVIGATOR_LOADING_STATUE\",\n status: status,\n };\n};\nexport const setNavigatorError = (status, msg) => {\n return {\n type: \"SET_NAVIGATOR_ERROR\",\n status: status,\n msg: msg,\n };\n};\nexport const openCreateFolderDialog = () => {\n return {\n type: \"OPEN_CREATE_FOLDER_DIALOG\",\n };\n};\nexport const openCreateFileDialog = () => {\n return {\n type: \"OPEN_CREATE_FILE_DIALOG\",\n };\n};\nexport const setUserPopover = (anchor) => {\n return {\n type: \"SET_USER_POPOVER\",\n anchor: anchor,\n };\n};\nexport const setShareUserPopover = (anchor) => {\n return {\n type: \"SET_SHARE_USER_POPOVER\",\n anchor: anchor,\n };\n};\nexport const openRenameDialog = () => {\n return {\n type: \"OPEN_RENAME_DIALOG\",\n };\n};\nexport const openResaveDialog = (key) => {\n return {\n type: \"OPEN_RESAVE_DIALOG\",\n key: key,\n };\n};\nexport const openMoveDialog = () => {\n return {\n type: \"OPEN_MOVE_DIALOG\",\n };\n};\nexport const openRemoveDialog = () => {\n return {\n type: \"OPEN_REMOVE_DIALOG\",\n };\n};\nexport const openShareDialog = () => {\n return {\n type: \"OPEN_SHARE_DIALOG\",\n };\n};\nexport const applyThemes = (theme) => {\n return {\n type: \"APPLY_THEME\",\n theme: theme,\n };\n};\nexport const setSessionStatus = (status) => {\n return {\n type: \"SET_SESSION_STATUS\",\n status: status,\n };\n};\nexport const openMusicDialog = () => {\n return {\n type: \"OPEN_MUSIC_DIALOG\",\n };\n};\nexport const openRemoteDownloadDialog = () => {\n return {\n type: \"OPEN_REMOTE_DOWNLOAD_DIALOG\",\n };\n};\nexport const openTorrentDownloadDialog = () => {\n return {\n type: \"OPEN_TORRENT_DOWNLOAD_DIALOG\",\n };\n};\nexport const openDecompressDialog = () => {\n return {\n type: \"OPEN_DECOMPRESS_DIALOG\",\n };\n};\nexport const openCompressDialog = () => {\n return {\n type: \"OPEN_COMPRESS_DIALOG\",\n };\n};\nexport const openRelocateDialog = () => {\n return {\n type: \"OPEN_RELOCATE_DIALOG\",\n };\n};\nexport const openGetSourceDialog = (source) => {\n return {\n type: \"OPEN_GET_SOURCE_DIALOG\",\n source,\n };\n};\nexport const openCopyDialog = () => {\n return {\n type: \"OPEN_COPY_DIALOG\",\n };\n};\n// Deprecated\nexport const openLoadingDialog = (text) => {\n return {\n type: \"OPEN_LOADING_DIALOG\",\n text: text,\n };\n};\n// Deprecated\nexport const closeAllModals = () => {\n return {\n type: \"CLOSE_ALL_MODALS\",\n };\n};\nexport const toggleSnackbar = (vertical, horizontal, msg, color) => {\n return {\n type: \"TOGGLE_SNACKBAR\",\n vertical: vertical,\n horizontal: horizontal,\n msg: msg,\n color: color,\n };\n};\nexport const setModalsLoading = (status) => {\n return {\n type: \"SET_MODALS_LOADING\",\n status: status,\n };\n};\nexport const refreshFileList = () => {\n return {\n type: \"REFRESH_FILE_LIST\",\n };\n};\nexport const searchMyFile = (keywords, path) => {\n return {\n type: \"SEARCH_MY_FILE\",\n keywords: keywords,\n path: path,\n };\n};\nexport const showImgPreivew = (first) => {\n return {\n type: \"SHOW_IMG_PREIVEW\",\n first: first,\n };\n};\nexport const showAudioPreview = (first) => {\n return {\n type: \"SHOW_AUDIO_PREVIEW\",\n first: first,\n };\n};\nexport const audioPreviewSetIsOpen = (isOpen) => {\n return {\n type: \"AUDIO_PREVIEW_SET_IS_OPEN\",\n isOpen,\n };\n};\nexport const audioPreviewSetPlaying = (playingName, paused) => {\n return {\n type: \"AUDIO_PREVIEW_SET_PLAYING\",\n playingName, //the playing content name\n paused,\n };\n};\nexport const refreshStorage = () => {\n return {\n type: \"REFRESH_STORAGE\",\n };\n};\nexport const saveFile = () => {\n return {\n type: \"SAVE_FILE\",\n };\n};\n\nexport const setSiteConfig = (config) => {\n return {\n type: \"SET_SITE_CONFIG\",\n config: config,\n };\n};\n\nexport const confirmPurchase = (purchase) => {\n return {\n type: \"CONFIRM_PURCHASE\",\n purchase: purchase,\n };\n};\n","import { Policy } from \"../types\";\nimport { FileValidateError } from \"../errors\";\n\ninterface Validator {\n (file: File, policy: Policy): void;\n}\n\n// validators\nconst checkers: Array = [\n function checkExt(file: File, policy: Policy) {\n if (\n policy.allowedSuffix != undefined &&\n policy.allowedSuffix.length > 0\n ) {\n const ext = file?.name.split(\".\").pop();\n if (ext === null || !ext || !policy.allowedSuffix.includes(ext))\n throw new FileValidateError(\n \"File suffix not allowed in policy.\",\n \"suffix\",\n policy\n );\n }\n },\n\n function checkSize(file: File, policy: Policy) {\n if (policy.maxSize > 0) {\n if (file.size > policy.maxSize) {\n throw new FileValidateError(\n \"File size exceeds maximum limit.\",\n \"size\",\n policy\n );\n }\n }\n },\n];\n\n/* 将每个 Validator 执行\n 失败返回 Error\n */\nexport function validate(file: File, policy: Policy) {\n checkers.forEach((c) => c(file, policy));\n}\n","import axios, { AxiosRequestConfig } from \"axios\";\nimport { Response } from \"../types\";\nimport {\n HTTPError,\n RequestCanceledError,\n TransformResponseError,\n} from \"../errors\";\n\nexport const { CancelToken } = axios;\nexport { CancelTokenSource } from \"axios\";\n\nconst baseConfig = {\n transformResponse: [\n (response: any) => {\n try {\n return JSON.parse(response);\n } catch (e) {\n throw new TransformResponseError(response, e);\n }\n },\n ],\n};\n\nconst cdBackendConfig = {\n ...baseConfig,\n baseURL: \"/api/v3\",\n withCredentials: true,\n};\n\nexport function request(url: string, config?: AxiosRequestConfig) {\n return axios\n .request({ ...baseConfig, ...config, url })\n .catch((err) => {\n if (axios.isCancel(err)) {\n throw new RequestCanceledError();\n }\n\n if (err instanceof TransformResponseError) {\n throw err;\n }\n\n throw new HTTPError(err, url);\n });\n}\n\nexport function requestAPI(url: string, config?: AxiosRequestConfig) {\n return request>(url, { ...cdBackendConfig, ...config });\n}\n","const Auth = {\n isAuthenticated: false,\n authenticate(cb: any) {\n Auth.SetUser(cb);\n Auth.isAuthenticated = true;\n },\n GetUser() {\n return JSON.parse(localStorage.getItem(\"user\") || \"null\");\n },\n SetUser(newUser: any) {\n localStorage.setItem(\"user\", JSON.stringify(newUser));\n },\n Check(): boolean {\n if (Auth.isAuthenticated) {\n return true;\n }\n if (localStorage.getItem(\"user\") !== null) {\n return !Auth.GetUser().anonymous;\n }\n return false;\n },\n signout() {\n Auth.isAuthenticated = false;\n const oldUser = Auth.GetUser();\n oldUser.id = 0;\n localStorage.setItem(\"user\", JSON.stringify(oldUser));\n },\n SetPreference(key: string, value: any) {\n let preference = JSON.parse(\n localStorage.getItem(\"user_preference\") || \"{}\"\n );\n preference = preference == null ? {} : preference;\n preference[key] = value;\n localStorage.setItem(\"user_preference\", JSON.stringify(preference));\n },\n GetPreference(key: string): any | null {\n const preference = JSON.parse(\n localStorage.getItem(\"user_preference\") || \"{}\"\n );\n if (preference && preference[key] !== undefined) {\n return preference[key];\n }\n return null;\n },\n GetPreferenceWithDefault(key: string, defaultVal: any): any {\n return Auth.GetPreference(key) !== null\n ? Auth.GetPreference(key)\n : defaultVal;\n },\n};\n\nexport default Auth;\n","import API from \"../middleware/Api\";\n\nexport async function getDownloadURL(file: any): Promise {\n let reqURL = \"\";\n if (file.key) {\n const downloadPath =\n file.path === \"/\"\n ? file.path + file.name\n : file.path + \"/\" + file.name;\n reqURL =\n \"/share/download/\" +\n file.key +\n \"?path=\" +\n encodeURIComponent(downloadPath);\n } else {\n reqURL = \"/file/download/\" + file.id;\n }\n\n return API.put(reqURL);\n}\n","import React, { useCallback } from \"react\";\nimport { IconButton, makeStyles } from \"@material-ui/core\";\nimport DayIcon from \"@material-ui/icons/Brightness7\";\nimport NightIcon from \"@material-ui/icons/Brightness4\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Auth from \"../../middleware/Auth\";\nimport classNames from \"classnames\";\nimport { toggleDaylightMode } from \"../../redux/explorer\";\n\nconst useStyles = makeStyles(() => ({\n icon: {\n color: \"rgb(255, 255, 255)\",\n opacity: \"0.54\",\n },\n}));\n\nconst DarkModeSwitcher = ({ position }) => {\n const ThemeType = useSelector(\n (state) => state.siteConfig.theme.palette.type\n );\n const dispatch = useDispatch();\n const ToggleThemeMode = useCallback(() => dispatch(toggleDaylightMode()), [\n dispatch,\n ]);\n const isDayLight = (ThemeType && ThemeType === \"light\") || !ThemeType;\n const isDark = ThemeType && ThemeType === \"dark\";\n const toggleMode = () => {\n Auth.SetPreference(\"theme_mode\", isDayLight ? \"dark\" : \"light\");\n ToggleThemeMode();\n };\n const classes = useStyles();\n return (\n \n \n {isDayLight && }\n {isDark && }\n \n \n );\n};\n\nexport default DarkModeSwitcher;\n","import React, { useCallback } from \"react\";\nimport {\n Avatar,\n CircularProgress,\n IconButton,\n ListItem,\n ListItemAvatar,\n ListItemText,\n makeStyles,\n} from \"@material-ui/core\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport { Nas } from \"mdi-material-ui\";\nimport Popover from \"@material-ui/core/Popover\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Backup, Check } from \"@material-ui/icons\";\nimport { blue, green } from \"@material-ui/core/colors\";\nimport List from \"@material-ui/core/List\";\nimport { refreshFileList, toggleSnackbar } from \"../../redux/explorer\";\nimport Divider from \"@material-ui/core/Divider\";\nimport Box from \"@material-ui/core/Box\";\nimport Link from \"@material-ui/core/Link\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport pathHelper from \"../../utils/page\";\n\nconst useStyles = makeStyles((theme) => ({\n uploadFromFile: {\n backgroundColor: blue[100],\n color: blue[600],\n },\n policySelected: {\n backgroundColor: green[100],\n color: green[800],\n },\n header: {\n padding: \"8px 16px\",\n fontSize: 14,\n },\n list: {\n minWidth: 300,\n maxHeight: 600,\n overflow: \"auto\",\n },\n}));\n\nconst PolicySwitcher = () => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [policies, setPolicies] = React.useState([]);\n const [loading, setLoading] = React.useState(null);\n const policy = useSelector((state) => state.explorer.currentPolicy);\n const path = useSelector((state) => state.navigator.path);\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const RefreshFileList = useCallback(() => dispatch(refreshFileList()), [\n dispatch,\n ]);\n const search = useSelector((state) => state.explorer.search);\n\n const handleClick = (event) => {\n if (policies.length === 0) {\n API.get(\"/user/setting/policies\", {})\n .then((response) => {\n setPolicies(response.data);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n }\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const switchTo = (id) => {\n if (id === policy.id) {\n handleClose();\n return;\n }\n setLoading(id);\n API.post(\"/webdav/mount\", {\n path: path,\n policy: id,\n })\n .then(() => {\n ToggleSnackbar(\"top\", \"right\", \"目录存储策略已切换\", \"success\");\n RefreshFileList();\n setLoading(null);\n handleClose();\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n setLoading(null);\n handleClose();\n });\n };\n\n const open = Boolean(anchorEl);\n const id = open ? \"simple-popover\" : undefined;\n\n const classes = useStyles();\n return (\n <>\n {pathHelper.isHomePage(location.pathname) && !search && (\n \n \n \n \n \n )}\n \n
\n 为当前目录设置存储策略:\n
\n\n \n \n {policies.map((value, index) => (\n switchTo(value.id)}\n >\n \n {value.id === loading && (\n \n )}\n {value.id !== loading && (\n <>\n {value.id === policy.id && (\n \n \n \n )}\n {value.id !== policy.id && (\n \n \n \n )}\n \n )}\n \n \n \n ))}\n \n \n
\n handleClose()}\n component={RouterLink}\n to={\"/connect?tab=1\"}\n color={\"secondary\"}\n >\n 管理绑定\n \n
\n \n \n );\n};\n\nexport default PolicySwitcher;\n","import React, { useCallback, useState } from \"react\";\nimport { IconButton, makeStyles, Menu, MenuItem } from \"@material-ui/core\";\nimport ViewListIcon from \"@material-ui/icons/ViewList\";\nimport ViewSmallIcon from \"@material-ui/icons/ViewComfy\";\nimport ViewModuleIcon from \"@material-ui/icons/ViewModule\";\nimport TextTotateVerticalIcon from \"@material-ui/icons/TextRotateVertical\";\nimport SaveIcon from \"@material-ui/icons/Save\";\nimport { Report as ReportIcon } from \"@material-ui/icons\";\nimport Avatar from \"@material-ui/core/Avatar\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Auth from \"../../../middleware/Auth\";\nimport { changeSortMethod } from \"../../../redux/explorer/action\";\nimport {\n changeViewMethod,\n openResaveDialog,\n setShareUserPopover,\n} from \"../../../redux/explorer\";\nimport { FormatPageBreak } from \"mdi-material-ui\";\nimport pathHelper from \"../../../utils/page\";\nimport { changePageSize } from \"../../../redux/viewUpdate/action\";\nimport Report from \"../../Modals/Report\";\n\nconst useStyles = makeStyles((theme) => ({\n sideButton: {\n padding: \"8px\",\n marginRight: \"5px\",\n },\n}));\n\nconst sortOptions = [\n \"A-Z\",\n \"Z-A\",\n \"最早上传\",\n \"最新上传\",\n \"最早修改\",\n \"最新修改\",\n \"最小\",\n \"最大\",\n];\n\nconst paginationOption = [\"50\", \"100\", \"200\", \"500\", \"1000\"];\n\nexport default function SubActions({ isSmall, inherit }) {\n const dispatch = useDispatch();\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n const share = useSelector((state) => state.viewUpdate.shareInfo);\n const pageSize = useSelector((state) => state.viewUpdate.pagination.size);\n const OpenLoadingDialog = useCallback(\n (method) => dispatch(changeViewMethod(method)),\n [dispatch]\n );\n const ChangeSortMethod = useCallback(\n (method) => dispatch(changeSortMethod(method)),\n [dispatch]\n );\n const OpenResaveDialog = useCallback(\n (key) => dispatch(openResaveDialog(key)),\n [dispatch]\n );\n const SetShareUserPopover = useCallback(\n (e) => dispatch(setShareUserPopover(e)),\n [dispatch]\n );\n const ChangePageSize = useCallback((e) => dispatch(changePageSize(e)), [\n dispatch,\n ]);\n const [anchorSort, setAnchorSort] = useState(null);\n const [anchorPagination, setAnchorPagination] = useState(null);\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [openReport, setOpenReport] = useState(false);\n const showSortOptions = (e) => {\n setAnchorSort(e.currentTarget);\n };\n const showPaginationOptions = (e) => {\n setAnchorPagination(e.currentTarget);\n };\n const handleMenuItemClick = (e, index) => {\n setSelectedIndex(index);\n const optionsTable = {\n 0: \"namePos\",\n 1: \"nameRev\",\n 2: \"timePos\",\n 3: \"timeRev\",\n 4: \"modifyTimePos\",\n 5: \"modifyTimeRev\",\n 6: \"sizePos\",\n 7: \"sizeRes\",\n };\n ChangeSortMethod(optionsTable[index]);\n setAnchorSort(null);\n };\n const handlePaginationChange = (s) => {\n ChangePageSize(s);\n setAnchorPagination(null);\n };\n\n const toggleViewMethod = () => {\n const newMethod =\n viewMethod === \"icon\"\n ? \"list\"\n : viewMethod === \"list\"\n ? \"smallIcon\"\n : \"icon\";\n Auth.SetPreference(\"view_method\", newMethod);\n OpenLoadingDialog(newMethod);\n };\n const isMobile = pathHelper.isMobile();\n\n const classes = useStyles();\n return (\n <>\n {viewMethod === \"icon\" && (\n \n \n \n )}\n {viewMethod === \"list\" && (\n \n \n \n )}\n\n {viewMethod === \"smallIcon\" && (\n \n \n \n )}\n\n {!isMobile && (\n \n \n \n )}\n setAnchorPagination(null)}\n >\n {paginationOption.map((option, index) => (\n handlePaginationChange(parseInt(option))}\n >\n {`${option} / 页`}\n \n ))}\n handlePaginationChange(-1)}\n >\n 不分页\n \n \n\n \n \n \n setAnchorSort(null)}\n >\n {sortOptions.map((option, index) => (\n handleMenuItemClick(event, index)}\n >\n {option}\n \n ))}\n \n {share && (\n <>\n OpenResaveDialog(share.key)}\n color={inherit ? \"inherit\" : \"default\"}\n >\n \n \n {!inherit && (\n <>\n setOpenReport(true)}\n >\n \n \n setOpenReport(false)}\n />\n \n )}\n \n )}\n {share && (\n SetShareUserPopover(e.currentTarget)}\n style={{ padding: 5 }}\n >\n \n \n )}\n \n );\n}\n","import React, { useCallback, useState } from \"react\";\nimport { FormControl, makeStyles, TextField } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n} from \"@material-ui/core\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Radio from \"@material-ui/core/Radio\";\nimport { reportReasons } from \"../../config\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\n\nconst useStyles = makeStyles((theme) => ({\n widthAnimation: {},\n shareUrl: {\n minWidth: \"400px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n },\n flexCenter: {\n alignItems: \"center\",\n },\n noFlex: {\n display: \"block\",\n },\n scoreCalc: {\n marginTop: 10,\n },\n}));\n\nexport default function Report(props) {\n const dispatch = useDispatch();\n const classes = useStyles();\n const [reason, setReason] = useState(\"0\");\n const [des, setDes] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const onClose = () => {\n props.onClose();\n setTimeout(() => {\n setDes(\"\");\n setReason(\"0\");\n }, 500);\n };\n\n const submitReport = () => {\n setLoading(true);\n API.post(\"/share/report/\" + props.share.key, {\n des: des,\n reason: parseInt(reason),\n })\n .then(() => {\n ToggleSnackbar(\"top\", \"right\", \"举报成功\", \"success\");\n setLoading(false);\n onClose();\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n setLoading(false);\n });\n };\n\n return (\n \n 举报\n \n \n setReason(e.target.value)}\n >\n {reportReasons.map((v, k) => (\n }\n label={v}\n />\n ))}\n \n \n setDes(e.target.value)}\n variant=\"filled\"\n rows={4}\n />\n \n\n \n \n \n 提交\n \n \n \n );\n}\n","import React from \"react\";\nimport { Dialog } from \"@material-ui/core\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Button from \"@material-ui/core/Button\";\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\nimport { useSelector } from \"react-redux\";\n\nexport default function PurchaseShareDialog() {\n const purchase = useSelector((state) => state.explorer.purchase);\n return (\n <>\n {purchase && (\n \n \n 确定要支付 {purchase.score} 积分 购买此分享?\n \n \n \n 购买后,您可以自由预览、下载此分享的所有内容,一定期限内不会重复扣费。如果您已购买,请忽略此提示。\n \n \n \n \n purchase.callback()}\n color=\"primary\"\n autoFocus\n >\n 确定\n \n \n \n )}\n \n );\n}\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport SaveIcon from \"@material-ui/icons/Save\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport AutoHidden from \"./AutoHidden\";\nimport statusHelper from \"../../utils/page\";\nimport Fab from \"@material-ui/core/Fab\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport { green } from \"@material-ui/core/colors\";\nimport clsx from \"clsx\";\n\nconst useStyles = makeStyles((theme) => ({\n fab: {\n margin: 0,\n top: \"auto\",\n right: 20,\n bottom: 20,\n left: \"auto\",\n zIndex: 5,\n position: \"fixed\",\n },\n badge: {\n position: \"absolute\",\n bottom: 26,\n top: \"auto\",\n zIndex: 9999,\n right: 7,\n },\n fabProgress: {\n color: green[500],\n position: \"absolute\",\n top: -6,\n left: -6,\n zIndex: 1,\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonSuccess: {\n backgroundColor: green[500],\n \"&:hover\": {\n backgroundColor: green[700],\n },\n },\n}));\n\nexport default function SaveButton(props) {\n const classes = useStyles();\n const buttonClassname = clsx({\n [classes.buttonSuccess]: props.status === \"success\",\n });\n\n return (\n \n
\n
\n \n \n {props.status === \"success\" ? (\n \n ) : (\n \n )}\n \n \n {props.status === \"loading\" && (\n \n )}\n
\n
\n
\n );\n}\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\nimport { blue } from \"@material-ui/core/colors\";\nimport { useSelector } from \"react-redux\";\n\nconst useStyles = makeStyles({\n avatar: {\n backgroundColor: blue[100],\n color: blue[600],\n },\n loadingContainer: {\n display: \"flex\",\n },\n loading: {\n marginTop: 10,\n marginLeft: 20,\n },\n});\n\nexport default function LoadingDialog() {\n const classes = useStyles();\n const open = useSelector((state) => state.viewUpdate.modals.loading);\n const text = useSelector((state) => state.viewUpdate.modals.loadingText);\n\n return (\n \n \n \n \n
{text}
\n
\n
\n
\n );\n}\n","import React, { useState, useCallback } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DialogContentText,\n CircularProgress,\n} from \"@material-ui/core\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport { refreshFileList, setModalsLoading, toggleSnackbar } from \"../../redux/explorer\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nexport default function CopyDialog(props) {\n const [selectedPath, setSelectedPath] = useState(\"\");\n const [selectedPathName, setSelectedPathName] = useState(\"\");\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const SetModalsLoading = useCallback(\n (status) => {\n dispatch(setModalsLoading(status));\n },\n [dispatch]\n );\n const RefreshFileList = useCallback(() => {\n dispatch(refreshFileList());\n }, [dispatch]);\n\n const setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n setSelectedPath(path);\n setSelectedPathName(folder.name);\n };\n\n const submitMove = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n SetModalsLoading(true);\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n\n if (props.selected[0].type === \"dir\") {\n dirs.push(props.selected[0].id);\n } else {\n items.push(props.selected[0].id);\n }\n\n API.post(\"/object/copy\", {\n src_dir: props.selected[0].path,\n src: {\n dirs: dirs,\n items: items,\n },\n dst: selectedPath === \"//\" ? \"/\" : selectedPath,\n })\n .then(() => {\n props.onClose();\n RefreshFileList();\n SetModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n SetModalsLoading(false);\n });\n };\n\n const classes = useStyles();\n\n return (\n \n 复制到\n \n\n {selectedPath !== \"\" && (\n \n \n 复制到 {selectedPathName}\n \n \n )}\n \n \n
\n \n 确定\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useCallback, useRef } from \"react\";\nimport {\n Button,\n Checkbox,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControl,\n makeStyles,\n TextField,\n} from \"@material-ui/core\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport List from \"@material-ui/core/List\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\nimport LockIcon from \"@material-ui/icons/Lock\";\nimport TimerIcon from \"@material-ui/icons/Timer\";\nimport CasinoIcon from \"@material-ui/icons/Casino\";\nimport AccountBalanceWalletIcon from \"@material-ui/icons/AccountBalanceWallet\";\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction\";\nimport Divider from \"@material-ui/core/Divider\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport Typography from \"@material-ui/core/Typography\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport { Visibility, VisibilityOff } from \"@material-ui/icons\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport OutlinedInput from \"@material-ui/core/OutlinedInput\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@material-ui/core/Select\";\nimport ToggleIcon from \"material-ui-toggle-icon\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\n\nconst useStyles = makeStyles((theme) => ({\n widthAnimation: {},\n shareUrl: {\n minWidth: \"400px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n },\n flexCenter: {\n alignItems: \"center\",\n },\n noFlex: {\n display: \"block\",\n },\n scoreCalc: {\n marginTop: 10,\n },\n}));\n\nconst ExpansionPanel = withStyles({\n root: {\n border: \"0px solid rgba(0, 0, 0, .125)\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {\n margin: \"auto\",\n },\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n padding: 0,\n \"&$expanded\": {},\n },\n content: {\n margin: 0,\n display: \"initial\",\n \"&$expanded\": {\n margin: \"0 0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n padding: 24,\n backgroundColor: theme.palette.background.default,\n },\n}))(MuiExpansionPanelDetails);\n\nexport default function CreatShare(props) {\n const dispatch = useDispatch();\n const classes = useStyles();\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const scoreEnabled = useSelector((state) => state.siteConfig.score_enabled);\n const scoreRate = useSelector((state) => state.siteConfig.share_score_rate);\n const lastSubmit = useRef(null);\n\n const [expanded, setExpanded] = React.useState(false);\n const [shareURL, setShareURL] = React.useState(\"\");\n const [values, setValues] = React.useState({\n password: \"\",\n downloads: 1,\n expires: 24 * 3600,\n showPassword: false,\n score: 0,\n });\n const [shareOption, setShareOption] = React.useState({\n password: false,\n expire: false,\n score: false,\n preview: true,\n });\n\n const handleChange = (prop) => (event) => {\n // 输入密码\n if (prop === \"password\") {\n if (event.target.value === \"\") {\n setShareOption({ ...shareOption, password: false });\n } else {\n setShareOption({ ...shareOption, password: true });\n }\n }\n\n // 输入积分\n if (prop === \"score\") {\n if (event.target.value == \"0\") {\n setShareOption({ ...shareOption, score: false });\n } else {\n setShareOption({ ...shareOption, score: true });\n }\n }\n\n setValues({ ...values, [prop]: event.target.value });\n };\n\n const handleClickShowPassword = () => {\n setValues({ ...values, showPassword: !values.showPassword });\n };\n\n const handleMouseDownPassword = (event) => {\n event.preventDefault();\n };\n\n const randomPassword = () => {\n setShareOption({ ...shareOption, password: true });\n setValues({\n ...values,\n password: Math.random().toString(36).substr(2).slice(2, 8),\n showPassword: true,\n });\n };\n\n const handleExpand = (panel) => (event, isExpanded) => {\n setExpanded(isExpanded ? panel : false);\n };\n\n const handleCheck = (prop) => () => {\n if (!shareOption[prop]) {\n handleExpand(prop)(null, true);\n }\n if (prop === \"password\" && shareOption[prop]) {\n setValues({\n ...values,\n password: \"\",\n });\n }\n if (prop === \"score\" && shareOption[prop]) {\n setValues({\n ...values,\n score: 0,\n });\n }\n setShareOption({ ...shareOption, [prop]: !shareOption[prop] });\n };\n\n const onClose = () => {\n props.onClose();\n setTimeout(() => {\n setShareURL(\"\");\n }, 500);\n };\n\n const senLink = () => {\n if (navigator.share) {\n let text = `我向你分享了:${props.selected[0].name} 链接:${shareURL}`;\n if (lastSubmit.current && lastSubmit.current.password) {\n text += `密码:${lastSubmit.current.password}`;\n }\n navigator.share({ text });\n } else if (navigator.clipboard) {\n navigator.clipboard.writeText(shareURL);\n ToggleSnackbar(\"top\", \"right\", \"分享链接已复制\", \"info\");\n }\n };\n\n const submitShare = (e) => {\n e.preventDefault();\n props.setModalsLoading(true);\n const submitFormBody = {\n id: props.selected[0].id,\n is_dir: props.selected[0].type === \"dir\",\n password: values.password,\n downloads: shareOption.expire ? values.downloads : -1,\n expire: values.expires,\n score: parseInt(values.score),\n preview: shareOption.preview,\n };\n lastSubmit.current = submitFormBody;\n\n API.post(\"/share\", submitFormBody)\n .then((response) => {\n setShareURL(response.data);\n setValues({\n password: \"\",\n downloads: 1,\n expires: 24 * 3600,\n showPassword: false,\n score: 0,\n });\n setShareOption({\n password: false,\n expire: false,\n score: false,\n });\n props.setModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n props.setModalsLoading(false);\n });\n };\n\n const handleFocus = (event) => event.target.select();\n\n return (\n \n 创建分享链接\n\n {shareURL === \"\" && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 分享密码\n \n \n \n \n \n \n \n \n }\n offIcon={\n \n }\n />\n \n \n }\n labelWidth={70}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1 次下载\n 2 次下载\n 3 次下载\n 4 次下载\n 5 次下载\n \n 20 次下载\n \n \n 50 次下载\n \n \n 100 次下载\n \n \n \n 或者\n \n \n 5 分钟\n 1 小时\n \n 1 天\n \n \n 7 天\n \n \n 30 天\n \n \n \n 后过期\n \n \n {scoreEnabled && (\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n 每人次下载需支付的积分\n \n \n \n {values.score !== 0 && scoreRate !== \"100\" && (\n \n {\"预计每人次下载可到账 \" +\n Math.ceil(\n (values.score * scoreRate) /\n 100\n ) +\n \" 积分\"}\n \n )}\n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 是否允许在分享页面预览文件内容\n \n \n \n \n \n \n )}\n {shareURL !== \"\" && (\n \n \n \n )}\n\n \n {shareURL !== \"\" && (\n
\n \n
\n )}\n \n\n {shareURL === \"\" && (\n
\n \n 创建分享链接\n {props.modalsLoading && (\n \n )}\n \n
\n )}\n
\n \n );\n}\n","import React, { useState, useCallback } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DialogContentText,\n CircularProgress,\n} from \"@material-ui/core\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport { filePath } from \"../../utils\";\nimport { setModalsLoading, toggleSnackbar } from \"../../redux/explorer\";\nimport { submitDecompressTask } from \"../../redux/explorer/action\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nexport default function DecompressDialog(props) {\n const [selectedPath, setSelectedPath] = useState(\"\");\n const [selectedPathName, setSelectedPathName] = useState(\"\");\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const SetModalsLoading = useCallback(\n (status) => {\n dispatch(setModalsLoading(status));\n },\n [dispatch]\n );\n const SubmitDecompressTask = useCallback(\n (path) => dispatch(submitDecompressTask(path)),\n [dispatch]\n );\n\n const setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n setSelectedPath(path);\n setSelectedPathName(folder.name);\n };\n\n const submitMove = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n SetModalsLoading(true);\n SubmitDecompressTask(selectedPath)\n .then(() => {\n props.onClose();\n ToggleSnackbar(\"top\", \"right\", \"解压缩任务已创建\", \"success\");\n SetModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n SetModalsLoading(false);\n });\n };\n\n const classes = useStyles();\n\n return (\n \n 解压送至\n \n\n {selectedPath !== \"\" && (\n \n \n 解压缩至 {selectedPathName}\n \n \n )}\n \n \n
\n \n 确定\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useState, useCallback } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DialogContentText,\n CircularProgress,\n} from \"@material-ui/core\";\nimport PathSelector from \"../FileManager/PathSelector\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport TextField from \"@material-ui/core/TextField\";\nimport { setModalsLoading, toggleSnackbar } from \"../../redux/explorer\";\nimport { submitCompressTask } from \"../../redux/explorer/action\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n backgroundColor: theme.palette.background.default,\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nexport default function CompressDialog(props) {\n const [selectedPath, setSelectedPath] = useState(\"\");\n const [fileName, setFileName] = useState(\"\");\n // eslint-disable-next-line\n const [selectedPathName, setSelectedPathName] = useState(\"\");\n\n const dispatch = useDispatch();\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const SetModalsLoading = useCallback(\n (status) => {\n dispatch(setModalsLoading(status));\n },\n [dispatch]\n );\n\n const SubmitCompressTask = useCallback(\n (name, path) => dispatch(submitCompressTask(name, path)),\n [dispatch]\n );\n\n const setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n setSelectedPath(path);\n setSelectedPathName(folder.name);\n };\n\n const submitMove = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n SetModalsLoading(true);\n\n SubmitCompressTask(fileName, selectedPath)\n .then(() => {\n props.onClose();\n ToggleSnackbar(\"top\", \"right\", \"压缩任务已创建\", \"success\");\n SetModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n SetModalsLoading(false);\n });\n };\n\n const classes = useStyles();\n\n return (\n \n 存放到\n \n\n {selectedPath !== \"\" && (\n \n \n setFileName(e.target.value)}\n value={fileName}\n fullWidth\n autoFocus\n id=\"standard-basic\"\n label=\"压缩文件名\"\n />\n \n \n )}\n \n \n
\n \n 确定\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n makeStyles,\n} from \"@material-ui/core\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { setModalsLoading, toggleSnackbar } from \"../../redux/explorer\";\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n input: {\n width: 250,\n },\n}));\n\nexport default function RelocateDialog(props) {\n const [selectedPolicy, setSelectedPolicy] = useState(\"\");\n const [policies, setPolicies] = useState([]);\n const dispatch = useDispatch();\n const policy = useSelector((state) => state.explorer.currentPolicy);\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const SetModalsLoading = useCallback(\n (status) => {\n dispatch(setModalsLoading(status));\n },\n [dispatch]\n );\n\n const submitRelocate = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n SetModalsLoading(true);\n\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n props.selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n });\n\n API.post(\"/file/relocate\", {\n src: {\n dirs: dirs,\n items: items,\n },\n dst_policy_id: selectedPolicy,\n })\n .then(() => {\n props.onClose();\n ToggleSnackbar(\"top\", \"right\", \"转移任务已创建\", \"success\");\n SetModalsLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n SetModalsLoading(false);\n });\n };\n\n useEffect(() => {\n if (props.open) {\n API.get(\"/user/setting/policies\")\n .then((response) => {\n setPolicies(response.data);\n setSelectedPolicy(policy.id);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n }\n\n // eslint-disable-next-line\n }, [props.open]);\n\n const classes = useStyles();\n\n return (\n \n 转移到存储策略\n\n \n setSelectedPolicy(e.target.value)}\n >\n {policies.map((v, k) => (\n \n {v.name}\n \n ))}\n \n \n\n \n \n
\n \n 确定\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React from \"react\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n List,\n ListItem,\n ListItemText,\n makeStyles,\n} from \"@material-ui/core\";\nimport { useSelector } from \"react-redux\";\n\nconst useStyles = makeStyles((theme) => ({}));\n\nexport default function OptionSelector() {\n const classes = useStyles();\n const option = useSelector((state) => state.viewUpdate.modals.option);\n\n return (\n \n \n {option && option.title}\n \n \n \n {option &&\n option.options.map((o) => (\n option && option.callback(o)}\n button\n >\n \n \n ))}\n \n \n \n \n \n \n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport PathSelector from \"./PathSelector\";\nimport API, { baseURL } from \"../../middleware/Api\";\nimport {\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n TextField,\n withStyles,\n} from \"@material-ui/core\";\nimport Loading from \"../Modals/Loading\";\nimport CopyDialog from \"../Modals/Copy\";\nimport CreatShare from \"../Modals/CreateShare\";\nimport { withRouter } from \"react-router-dom\";\nimport pathHelper from \"../../utils/page\";\nimport PurchaseShareDialog from \"../Modals/PurchaseShare\";\nimport DecompressDialog from \"../Modals/Decompress\";\nimport CompressDialog from \"../Modals/Compress\";\nimport RelocateDialog from \"../Modals/Relocate\";\nimport {\n closeAllModals,\n openLoadingDialog,\n refreshFileList,\n refreshStorage,\n setModalsLoading,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport OptionSelector from \"../Modals/OptionSelector\";\n\nconst styles = (theme) => ({\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n selected: state.explorer.selected,\n modalsStatus: state.viewUpdate.modals,\n modalsLoading: state.viewUpdate.modalsLoading,\n dirList: state.explorer.dirList,\n fileList: state.explorer.fileList,\n dndSignale: state.explorer.dndSignal,\n dndTarget: state.explorer.dndTarget,\n dndSource: state.explorer.dndSource,\n loading: state.viewUpdate.modals.loading,\n loadingText: state.viewUpdate.modals.loadingText,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n closeAllModals: () => {\n dispatch(closeAllModals());\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n setModalsLoading: (status) => {\n dispatch(setModalsLoading(status));\n },\n refreshFileList: () => {\n dispatch(refreshFileList());\n },\n refreshStorage: () => {\n dispatch(refreshStorage());\n },\n openLoadingDialog: (text) => {\n dispatch(openLoadingDialog(text));\n },\n };\n};\n\nclass ModalsCompoment extends Component {\n state = {\n newFolderName: \"\",\n newFileName: \"\",\n newName: \"\",\n selectedPath: \"\",\n selectedPathName: \"\",\n secretShare: false,\n sharePwd: \"\",\n shareUrl: \"\",\n downloadURL: \"\",\n remoteDownloadPathSelect: false,\n purchaseCallback: null,\n };\n\n handleInputChange = (e) => {\n this.setState({\n [e.target.id]: e.target.value,\n });\n };\n\n newNameSuffix = \"\";\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (this.props.dndSignale !== nextProps.dndSignale) {\n this.dragMove(nextProps.dndSource, nextProps.dndTarget);\n return;\n }\n\n if (this.props.modalsStatus.rename !== nextProps.modalsStatus.rename) {\n const name = nextProps.selected[0].name;\n this.setState({\n newName: name,\n });\n return;\n }\n };\n\n submitRemove = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n this.props.selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n });\n API.delete(\"/object\", {\n data: {\n items: items,\n dirs: dirs,\n },\n })\n .then((response) => {\n if (response.rawData.code === 0) {\n this.onClose();\n setTimeout(this.props.refreshFileList, 500);\n } else {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n response.rawData.msg,\n \"warning\"\n );\n }\n this.props.setModalsLoading(false);\n this.props.refreshStorage();\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n });\n };\n\n submitResave = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n API.post(\"/share/save/\" + window.shareKey, {\n path:\n this.state.selectedPath === \"//\"\n ? \"/\"\n : this.state.selectedPath,\n })\n .then(() => {\n this.onClose();\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"文件已保存\",\n \"success\"\n );\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n });\n };\n\n submitMove = (e) => {\n if (e != null) {\n e.preventDefault();\n }\n this.props.setModalsLoading(true);\n const dirs = [],\n items = [];\n // eslint-disable-next-line\n this.props.selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n });\n API.patch(\"/object\", {\n action: \"move\",\n src_dir: this.props.selected[0].path,\n src: {\n dirs: dirs,\n items: items,\n },\n dst: this.DragSelectedPath\n ? this.DragSelectedPath\n : this.state.selectedPath === \"//\"\n ? \"/\"\n : this.state.selectedPath,\n })\n .then(() => {\n this.onClose();\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n })\n .then(() => {\n this.props.closeAllModals();\n });\n };\n\n dragMove = (source, target) => {\n if (this.props.selected.length === 0) {\n this.props.selected[0] = source;\n }\n let doMove = true;\n\n // eslint-disable-next-line\n this.props.selected.map((value) => {\n // 根据ID过滤\n if (value.id === target.id && value.type === target.type) {\n doMove = false;\n // eslint-disable-next-line\n return;\n }\n // 根据路径过滤\n if (\n value.path ===\n target.path + (target.path === \"/\" ? \"\" : \"/\") + target.name\n ) {\n doMove = false;\n }\n });\n if (doMove) {\n this.DragSelectedPath =\n target.path === \"/\"\n ? target.path + target.name\n : target.path + \"/\" + target.name;\n this.props.openLoadingDialog(\"处理中...\");\n this.submitMove();\n }\n };\n\n submitRename = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n const newName = this.state.newName;\n\n const src = {\n dirs: [],\n items: [],\n };\n\n if (this.props.selected[0].type === \"dir\") {\n src.dirs[0] = this.props.selected[0].id;\n } else {\n src.items[0] = this.props.selected[0].id;\n }\n\n // 检查重名\n if (\n this.props.dirList.findIndex((value) => {\n return value.name === newName;\n }) !== -1 ||\n this.props.fileList.findIndex((value) => {\n return value.name === newName;\n }) !== -1\n ) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"新名称与已有文件重复\",\n \"warning\"\n );\n this.props.setModalsLoading(false);\n } else {\n API.post(\"/object/rename\", {\n action: \"rename\",\n src: src,\n new_name: newName,\n })\n .then(() => {\n this.onClose();\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n });\n }\n };\n\n submitCreateNewFolder = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n if (\n this.props.dirList.findIndex((value) => {\n return value.name === this.state.newFolderName;\n }) !== -1\n ) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"文件夹名称重复\",\n \"warning\"\n );\n this.props.setModalsLoading(false);\n } else {\n API.put(\"/directory\", {\n path:\n (this.props.path === \"/\" ? \"\" : this.props.path) +\n \"/\" +\n this.state.newFolderName,\n })\n .then(() => {\n this.onClose();\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.setModalsLoading(false);\n\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n }\n //this.props.toggleSnackbar();\n };\n\n submitCreateNewFile = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n if (\n this.props.dirList.findIndex((value) => {\n return value.name === this.state.newFileName;\n }) !== -1\n ) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"文件名称重复\",\n \"warning\"\n );\n this.props.setModalsLoading(false);\n } else {\n API.post(\"/file/create\", {\n path:\n (this.props.path === \"/\" ? \"\" : this.props.path) +\n \"/\" +\n this.state.newFileName,\n })\n .then(() => {\n this.onClose();\n this.props.refreshFileList();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.setModalsLoading(false);\n\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n }\n //this.props.toggleSnackbar();\n };\n\n submitTorrentDownload = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n API.post(\"/aria2/torrent/\" + this.props.selected[0].id, {\n dst:\n this.state.selectedPath === \"//\"\n ? \"/\"\n : this.state.selectedPath,\n })\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"任务已创建\",\n \"success\"\n );\n this.onClose();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n });\n };\n\n submitDownload = (e) => {\n e.preventDefault();\n this.props.setModalsLoading(true);\n API.post(\"/aria2/url\", {\n url: this.state.downloadURL.split(\"\\n\"),\n dst:\n this.state.selectedPath === \"//\"\n ? \"/\"\n : this.state.selectedPath,\n })\n .then((response) => {\n const failed = response.data\n .filter((r) => r.code !== 0)\n .map((r) => (r.msg + r.error ? r.error : \"\"));\n if (failed.length > 0) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n `${failed.length} 个任务创建失败:${failed.join(\",\")}`,\n \"warning\"\n );\n } else {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"任务已创建\",\n \"success\"\n );\n }\n\n this.onClose();\n this.props.setModalsLoading(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.props.setModalsLoading(false);\n });\n };\n\n setMoveTarget = (folder) => {\n const path =\n folder.path === \"/\"\n ? folder.path + folder.name\n : folder.path + \"/\" + folder.name;\n this.setState({\n selectedPath: path,\n selectedPathName: folder.name,\n });\n };\n\n remoteDownloadNext = () => {\n this.props.closeAllModals();\n this.setState({\n remoteDownloadPathSelect: true,\n });\n };\n\n onClose = () => {\n this.setState({\n newFolderName: \"\",\n newFileName: \"\",\n newName: \"\",\n selectedPath: \"\",\n selectedPathName: \"\",\n secretShare: false,\n sharePwd: \"\",\n downloadURL: \"\",\n shareUrl: \"\",\n remoteDownloadPathSelect: false,\n });\n this.newNameSuffix = \"\";\n this.props.closeAllModals();\n };\n\n handleChange = (name) => (event) => {\n this.setState({ [name]: event.target.checked });\n };\n\n copySource = () => {\n if (navigator.clipboard) {\n navigator.clipboard.writeText(this.props.modalsStatus.getSource);\n this.props.toggleSnackbar(\"top\", \"right\", \"链接已复制\", \"info\");\n }\n };\n\n render() {\n const { classes } = this.props;\n\n return (\n
\n \n \n \n \n \n 获取文件外链\n \n\n \n \n \n \n \n \n \n \n \n 新建文件夹\n\n \n
\n this.handleInputChange(e)}\n fullWidth\n />\n \n
\n \n \n
\n \n 创建\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n\n \n 新建文件\n\n \n
\n this.handleInputChange(e)}\n fullWidth\n />\n \n
\n \n \n
\n \n 创建\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n\n \n 重命名\n \n \n 输入{\" \"}\n \n {this.props.selected.length === 1\n ? this.props.selected[0].name\n : \"\"}\n {\" \"}\n 的新名称:\n \n
\n this.handleInputChange(e)}\n fullWidth\n />\n \n
\n \n \n
\n \n 确定\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n \n\n \n 移动至\n \n\n {this.state.selectedPath !== \"\" && (\n \n \n 移动至{\" \"}\n {this.state.selectedPathName}\n \n \n )}\n \n \n
\n \n 确定\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n \n 保存至\n \n\n {this.state.selectedPath !== \"\" && (\n \n \n 保存至{\" \"}\n {this.state.selectedPathName}\n \n \n )}\n \n \n
\n \n 确定\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n \n 删除对象\n\n \n \n 确定要删除\n {this.props.selected.length === 1 && (\n {this.props.selected[0].name} \n )}\n {this.props.selected.length > 1 && (\n \n 这{this.props.selected.length}个对象\n \n )}\n 吗?\n \n \n \n \n
\n \n 确定\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n\n \n\n \n 音频播放\n\n \n \n {this.props.selected.length !== 0 && (\n \n )}\n \n \n \n \n \n \n \n \n 新建离线下载任务\n \n\n \n \n \n \n \n \n \n \n 下一步\n \n \n \n \n \n 选择存储位置\n \n \n\n {this.state.selectedPath !== \"\" && (\n \n \n 下载至{\" \"}\n {this.state.selectedPathName}\n \n \n )}\n \n \n
\n \n 创建任务\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n \n \n 选择存储位置\n \n \n\n {this.state.selectedPath !== \"\" && (\n \n \n 下载至{\" \"}\n {this.state.selectedPathName}\n \n \n )}\n \n \n
\n \n 创建任务\n {this.props.modalsLoading && (\n \n )}\n \n
\n
\n \n\n \n \n \n
\n );\n }\n}\n\nModalsCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst Modals = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(ModalsCompoment)));\n\nexport default Modals;\n","export const sizeToString = (bytes) => {\n if (bytes === 0 || bytes === \"0\") return \"0 B\";\n const k = 1024;\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return (bytes / Math.pow(k, i)).toFixed(1) + \" \" + sizes[i];\n};\n\nexport const fixUrlHash = (path) => {\n return path;\n};\n\nexport const setCookie = (name, value, days) => {\n if (days) {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n }\n document.cookie = name + \"=\" + (value || \"\") + \"; path=/\";\n};\n\nexport const setGetParameter = (paramName, paramValue) => {\n let url = window.location.href;\n\n if (url.indexOf(paramName + \"=\") >= 0) {\n const prefix = url.substring(0, url.indexOf(paramName));\n let suffix = url.substring(url.indexOf(paramName));\n suffix = suffix.substring(suffix.indexOf(\"=\") + 1);\n suffix =\n suffix.indexOf(\"&\") >= 0\n ? suffix.substring(suffix.indexOf(\"&\"))\n : \"\";\n url = prefix + paramName + \"=\" + paramValue + suffix;\n } else {\n if (url.indexOf(\"?\") < 0) url += \"?\" + paramName + \"=\" + paramValue;\n else url += \"&\" + paramName + \"=\" + paramValue;\n }\n if (url === window.location.href) {\n return;\n }\n window.history.pushState(null, null, url);\n};\n\nexport const checkGetParameters = (field) => {\n const url = window.location.href;\n if (url.indexOf(\"?\" + field + \"=\") !== -1) return true;\n else if (url.indexOf(\"&\" + field + \"=\") !== -1) return true;\n return false;\n};\n\nexport const changeThemeColor = (color) => {\n const metaThemeColor = window.document.querySelector(\n \"meta[name=theme-color]\"\n );\n metaThemeColor.setAttribute(\"content\", color);\n};\n\nexport function bufferDecode(value) {\n return Uint8Array.from(atob(value), (c) => c.charCodeAt(0));\n}\n\n// ArrayBuffer to URLBase64\nexport function bufferEncode(value) {\n return btoa(String.fromCharCode.apply(null, new Uint8Array(value)))\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=/g, \"\");\n}\n\nexport function pathBack(path) {\n const folders =\n path !== null\n ? path.substr(1).split(\"/\")\n : this.props.path.substr(1).split(\"/\");\n return \"/\" + folders.slice(0, folders.length - 1).join(\"/\");\n}\n\nexport function filePath(file) {\n return file.path === \"/\"\n ? file.path + file.name\n : file.path + \"/\" + file.name;\n}\n\nexport function hex2bin(hex) {\n return parseInt(hex, 16).toString(2).padStart(8, \"0\");\n}\n\nexport function pathJoin(parts, sep) {\n const separator = sep || \"/\";\n parts = parts.map((part, index) => {\n if (index) {\n part = part.replace(new RegExp(\"^\" + separator), \"\");\n }\n if (index !== parts.length - 1) {\n part = part.replace(new RegExp(separator + \"$\"), \"\");\n }\n return part;\n });\n return parts.join(separator);\n}\n\nexport function basename(path) {\n if (!path) {\n return \"\";\n }\n const pathList = path.split(\"/\");\n pathList.pop();\n return pathList.join(\"/\") === \"\" ? \"/\" : pathList.join(\"/\");\n}\n\nexport function filename(path) {\n const pathList = path.split(\"/\");\n return pathList.pop();\n}\n\nexport function fileNameNoExt(filename) {\n return filename.substring(0, filename.lastIndexOf(\".\")) || filename;\n}\n\nexport function randomStr(length) {\n let result = \"\";\n const characters =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(\n Math.floor(Math.random() * charactersLength)\n );\n }\n return result;\n}\n\nexport function getNumber(base, conditions) {\n conditions.forEach((v) => {\n if (v) {\n base++;\n }\n });\n return base;\n}\n\nexport const isMac = () => {\n return navigator.platform.toUpperCase().indexOf(\"MAC\") >= 0;\n};\n\nexport const isMobileSafari = () => {\n const ua = window.navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n const webkit = !!ua.match(/WebKit/i);\n return iOS && webkit && !ua.match(/CriOS/i);\n};\n\nexport function vhCheck() {\n const vh = window.innerHeight;\n document.documentElement.style.setProperty(\"--vh\", `${vh}px`);\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { Paper } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport Editor from \"for-editor\";\nimport SaveButton from \"../Dial/Save\";\nimport pathHelper from \"../../utils/page\";\nimport TextLoading from \"../Placeholder/TextLoading\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport UseFileSubTitle from \"../../hooks/fileSubtitle\";\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"30px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n marginLeft: theme.spacing(12),\n marginRight: theme.spacing(12),\n },\n marginBottom: 50,\n },\n player: {\n borderRadius: \"4px\",\n },\n root: {\n backgroundColor: \"white\",\n borderRadius: \"8px\",\n },\n \"@global\": {\n \".for-toolbar\": {\n overflowX: \"auto!important\",\n },\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function TextViewer() {\n const [content, setContent] = useState(\"\");\n const [status, setStatus] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const math = useRouteMatch();\n const $vm = React.createRef();\n const location = useLocation();\n const query = useQuery();\n const { id } = useParams();\n UseFileSubTitle(query, math, location);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n let requestURL = \"/file/content/\" + query.get(\"id\");\n if (pathHelper.isSharePage(location.pathname)) {\n requestURL = \"/share/content/\" + id;\n if (query.get(\"share_path\") !== \"\") {\n requestURL +=\n \"?path=\" + encodeURIComponent(query.get(\"share_path\"));\n }\n }\n\n setLoading(true);\n API.get(requestURL, { responseType: \"arraybuffer\" })\n .then((response) => {\n const buffer = new Buffer(response.rawData, \"binary\");\n const textdata = buffer.toString(); // for string\n setContent(textdata);\n })\n .catch((error) => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"无法读取文件内容,\" + error.message,\n \"error\"\n );\n })\n .then(() => {\n setLoading(false);\n });\n // eslint-disable-next-line\n }, [math.params[0]]);\n\n const toBase64 = (file) =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(error);\n });\n\n const save = () => {\n setStatus(\"loading\");\n API.put(\"/file/update/\" + query.get(\"id\"), content)\n .then(() => {\n setStatus(\"success\");\n setTimeout(() => setStatus(\"\"), 2000);\n })\n .catch((error) => {\n setStatus(\"\");\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n const addImg = async ($file) => {\n $vm.current.$img2Url($file.name, await toBase64($file));\n console.log($file);\n };\n\n const classes = useStyles();\n return (\n
\n \n {loading && }\n {!loading && (\n save()}\n addImg={($file) => addImg($file)}\n onChange={(value) => setContent(value)}\n toolbar={{\n h1: true, // h1\n h2: true, // h2\n h3: true, // h3\n h4: true, // h4\n img: true, // 图片\n link: true, // 链接\n code: true, // 代码块\n preview: true, // 预览\n expand: true, // 全屏\n /* v0.0.9 */\n undo: true, // 撤销\n redo: true, // 重做\n save: false, // 保存\n /* v0.2.3 */\n subfield: true, // 单双栏模式\n }}\n />\n )}\n \n {!pathHelper.isSharePage(location.pathname) && (\n \n )}\n
\n );\n}\n","import React, { Suspense, useCallback, useEffect, useState } from \"react\";\nimport { Paper, useTheme } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport pathHelper from \"../../utils/page\";\nimport SaveButton from \"../Dial/Save\";\nimport { codePreviewSuffix } from \"../../config\";\nimport TextLoading from \"../Placeholder/TextLoading\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Select from \"@material-ui/core/Select\";\nimport Switch from \"@material-ui/core/Switch\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport UseFileSubTitle from \"../../hooks/fileSubtitle\";\n\nconst MonacoEditor = React.lazy(() =>\n import(/* webpackChunkName: \"codeEditor\" */ \"react-monaco-editor\")\n);\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"30px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 40,\n },\n editor: {\n borderRadius: \"4px\",\n },\n \"@global\": {\n \".overflow-guard\": {\n borderRadius: \"4px!important\",\n },\n },\n formControl: {\n margin: \"8px 16px 8px 16px\",\n },\n toobar: {\n textAlign: \"right\",\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function CodeViewer() {\n const [content, setContent] = useState(\"\");\n const [status, setStatus] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const [suffix, setSuffix] = useState(\"javascript\");\n const [wordWrap, setWordWrap] = useState(\"off\");\n\n const math = useRouteMatch();\n const location = useLocation();\n const query = useQuery();\n const { id } = useParams();\n const theme = useTheme();\n const { title } = UseFileSubTitle(query, math, location);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n const extension = title.split(\".\");\n setSuffix(codePreviewSuffix[extension.pop()]);\n // eslint-disable-next-line\n }, [title]);\n\n useEffect(() => {\n let requestURL = \"/file/content/\" + query.get(\"id\");\n if (pathHelper.isSharePage(location.pathname)) {\n requestURL = \"/share/content/\" + id;\n if (query.get(\"share_path\") !== \"\") {\n requestURL +=\n \"?path=\" + encodeURIComponent(query.get(\"share_path\"));\n }\n }\n\n setLoading(true);\n API.get(requestURL, { responseType: \"arraybuffer\" })\n .then((response) => {\n const buffer = new Buffer(response.rawData, \"binary\");\n const textdata = buffer.toString(); // for string\n setContent(textdata);\n })\n .catch((error) => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"无法读取文件内容,\" + error.message,\n \"error\"\n );\n })\n .then(() => {\n setLoading(false);\n });\n // eslint-disable-next-line\n }, [math.params[0]]);\n\n const save = () => {\n setStatus(\"loading\");\n API.put(\"/file/update/\" + query.get(\"id\"), content)\n .then(() => {\n setStatus(\"success\");\n setTimeout(() => setStatus(\"\"), 2000);\n })\n .catch((error) => {\n setStatus(\"\");\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n const classes = useStyles();\n const isSharePage = pathHelper.isSharePage(location.pathname);\n return (\n
\n \n
\n \n \n setWordWrap(\n e.target.checked ? \"on\" : \"off\"\n )\n }\n />\n }\n label=\"自动换行\"\n />\n \n \n setSuffix(e.target.value)}\n >\n {Array.from(\n new Set(\n Object.keys(codePreviewSuffix).map((k) => {\n return codePreviewSuffix[k];\n })\n )\n ).map((extension) => (\n // eslint-disable-next-line react/jsx-key\n \n {extension}\n \n ))}\n \n \n
\n \n {loading && }\n {!loading && (\n }>\n setContent(value)}\n />\n \n )}\n
\n {!isSharePage && }\n
\n );\n}\n","import {\n OneDriveError,\n Policy,\n QiniuError,\n Response,\n UpyunError,\n} from \"../types\";\nimport { sizeToString } from \"../utils\";\n\nexport enum UploaderErrorName {\n InvalidFile = \"InvalidFile\",\n NoPolicySelected = \"NoPolicySelected\",\n UnknownPolicyType = \"UnknownPolicyType\",\n FailedCreateUploadSession = \"FailedCreateUploadSession\",\n FailedDeleteUploadSession = \"FailedDeleteUploadSession\",\n HTTPRequestFailed = \"HTTPRequestFailed\",\n LocalChunkUploadFailed = \"LocalChunkUploadFailed\",\n SlaveChunkUploadFailed = \"SlaveChunkUploadFailed\",\n WriteCtxFailed = \"WriteCtxFailed\",\n RemoveCtxFailed = \"RemoveCtxFailed\",\n ReadCtxFailed = \"ReadCtxFailed\",\n InvalidCtxData = \"InvalidCtxData\",\n CtxExpired = \"CtxExpired\",\n RequestCanceled = \"RequestCanceled\",\n ProcessingTaskDuplicated = \"ProcessingTaskDuplicated\",\n OneDriveChunkUploadFailed = \"OneDriveChunkUploadFailed\",\n OneDriveEmptyFile = \"OneDriveEmptyFile\",\n FailedFinishOneDriveUpload = \"FailedFinishOneDriveUpload\",\n S3LikeChunkUploadFailed = \"S3LikeChunkUploadFailed\",\n S3LikeUploadCallbackFailed = \"S3LikeUploadCallbackFailed\",\n COSUploadCallbackFailed = \"COSUploadCallbackFailed\",\n COSPostUploadFailed = \"COSPostUploadFailed\",\n UpyunPostUploadFailed = \"UpyunPostUploadFailed\",\n QiniuChunkUploadFailed = \"QiniuChunkUploadFailed\",\n FailedFinishOSSUpload = \"FailedFinishOSSUpload\",\n FailedFinishQiniuUpload = \"FailedFinishQiniuUpload\",\n FailedTransformResponse = \"FailedTransformResponse\",\n}\n\nconst RETRY_ERROR_LIST = [\n UploaderErrorName.FailedCreateUploadSession,\n UploaderErrorName.HTTPRequestFailed,\n UploaderErrorName.LocalChunkUploadFailed,\n UploaderErrorName.SlaveChunkUploadFailed,\n UploaderErrorName.RequestCanceled,\n UploaderErrorName.ProcessingTaskDuplicated,\n UploaderErrorName.FailedTransformResponse,\n];\n\nconst RETRY_CODE_LIST = [-1];\n\nexport class UploaderError implements Error {\n public stack: string | undefined;\n constructor(public name: UploaderErrorName, public message: string) {\n this.stack = new Error().stack;\n }\n\n public Message(i18n: string): string {\n return this.message;\n }\n\n public Retryable(): boolean {\n return RETRY_ERROR_LIST.includes(this.name);\n }\n}\n\n// 文件未通过存储策略验证\nexport class FileValidateError extends UploaderError {\n // 未通过验证的文件属性\n public field: \"size\" | \"suffix\";\n\n // 对应的存储策略\n public policy: Policy;\n\n constructor(message: string, field: \"size\" | \"suffix\", policy: Policy) {\n super(UploaderErrorName.InvalidFile, message);\n this.field = field;\n this.policy = policy;\n }\n\n public Message(i18n: string): string {\n if (this.field == \"size\") {\n return `文件大小超出存储策略限制(最大:${sizeToString(\n this.policy.maxSize\n )})`;\n }\n\n return `存储策略不支持上传此扩展名的文件(当前支持:${\n this.policy.allowedSuffix\n ? this.policy.allowedSuffix.join(\",\")\n : \"*\"\n })`;\n }\n}\n\n// 未知存储策略\nexport class UnknownPolicyError extends UploaderError {\n // 对应的存储策略\n public policy: Policy;\n\n constructor(message: string, policy: Policy) {\n super(UploaderErrorName.UnknownPolicyType, message);\n this.policy = policy;\n }\n}\n\n// 后端 API 出错\nexport class APIError extends UploaderError {\n constructor(\n name: UploaderErrorName,\n message: string,\n protected response: Response\n ) {\n super(name, message);\n }\n\n public Message(i18n: string): string {\n let msg = `${this.message}: ${this.response.msg}`;\n if (this.response.error) {\n msg += ` (${this.response.error})`;\n }\n\n return msg;\n }\n\n public Retryable(): boolean {\n return (\n super.Retryable() && RETRY_CODE_LIST.includes(this.response.code)\n );\n }\n}\n\n// 无法创建上传会话\nexport class CreateUploadSessionError extends APIError {\n constructor(response: Response) {\n super(UploaderErrorName.FailedCreateUploadSession, \"\", response);\n }\n\n public Message(i18n: string): string {\n this.message = \"无法创建上传会话\";\n return super.Message(i18n);\n }\n}\n\n// 无法删除上传会话\nexport class DeleteUploadSessionError extends APIError {\n constructor(response: Response) {\n super(UploaderErrorName.FailedDeleteUploadSession, \"\", response);\n }\n\n public Message(i18n: string): string {\n this.message = \"无法删除上传会话\";\n return super.Message(i18n);\n }\n}\n\n// HTTP 请求出错\nexport class HTTPError extends UploaderError {\n public response?: any;\n constructor(public axiosErr: any, protected url: string) {\n super(UploaderErrorName.HTTPRequestFailed, axiosErr.message);\n this.response = axiosErr.response;\n }\n\n public Message(i18n: string): string {\n return `请求失败: ${this.axiosErr} (${this.url})`;\n }\n}\n\n// 本地分块上传失败\nexport class LocalChunkUploadError extends APIError {\n constructor(response: Response, protected chunkIndex: number) {\n super(UploaderErrorName.LocalChunkUploadFailed, \"\", response);\n }\n\n public Message(i18n: string): string {\n this.message = `分片 [${this.chunkIndex}] 上传失败`;\n return super.Message(i18n);\n }\n}\n\n// 无法创建上传会话\nexport class RequestCanceledError extends UploaderError {\n constructor() {\n super(UploaderErrorName.RequestCanceled, \"Request canceled\");\n }\n}\n\n// 从机分块上传失败\nexport class SlaveChunkUploadError extends APIError {\n constructor(response: Response, protected chunkIndex: number) {\n super(UploaderErrorName.SlaveChunkUploadFailed, \"\", response);\n }\n\n public Message(i18n: string): string {\n this.message = `分片 [${this.chunkIndex}] 上传失败`;\n return super.Message(i18n);\n }\n}\n\n// 上传任务冲突\nexport class ProcessingTaskDuplicatedError extends UploaderError {\n constructor() {\n super(\n UploaderErrorName.ProcessingTaskDuplicated,\n \"Processing task duplicated\"\n );\n }\n\n public Message(i18n: string): string {\n return \"同名文件的上传任务已经在处理中\";\n }\n}\n\n// OneDrive 分块上传失败\nexport class OneDriveChunkError extends UploaderError {\n constructor(public response: OneDriveError) {\n super(\n UploaderErrorName.OneDriveChunkUploadFailed,\n response.error.message\n );\n }\n\n public Message(i18n: string): string {\n return `分片上传失败: ${this.message}`;\n }\n}\n\n// OneDrive 选择了空文件上传\nexport class OneDriveEmptyFileSelected extends UploaderError {\n constructor() {\n super(UploaderErrorName.OneDriveEmptyFile, \"empty file not supported\");\n }\n\n public Message(i18n: string): string {\n return `暂不支持上传空文件至 OneDrive,请通过创建文件按钮创建空文件`;\n }\n}\n\n// OneDrive 无法完成文件上传\nexport class OneDriveFinishUploadError extends APIError {\n constructor(response: Response) {\n super(UploaderErrorName.FailedFinishOneDriveUpload, \"\", response);\n }\n\n public Message(i18n: string): string {\n this.message = `无法完成文件上传`;\n return super.Message(i18n);\n }\n}\n\n// S3 类策略分块上传失败\nexport class S3LikeChunkError extends UploaderError {\n constructor(public response: Document) {\n super(\n UploaderErrorName.S3LikeChunkUploadFailed,\n response.getElementsByTagName(\"Message\")[0].innerHTML\n );\n }\n\n public Message(i18n: string): string {\n return `分片上传失败: ${this.message}`;\n }\n}\n\n// OSS 完成传失败\nexport class S3LikeFinishUploadError extends UploaderError {\n constructor(public response: Document) {\n super(\n UploaderErrorName.S3LikeChunkUploadFailed,\n response.getElementsByTagName(\"Message\")[0].innerHTML\n );\n }\n\n public Message(i18n: string): string {\n return `无法完成文件上传: ${this.message} (${\n this.response.getElementsByTagName(\"Code\")[0].innerHTML\n })`;\n }\n}\n\n// qiniu 分块上传失败\nexport class QiniuChunkError extends UploaderError {\n constructor(public response: QiniuError) {\n super(UploaderErrorName.QiniuChunkUploadFailed, response.error);\n }\n\n public Message(i18n: string): string {\n return `分片上传失败: ${this.message}`;\n }\n}\n\n// qiniu 完成传失败\nexport class QiniuFinishUploadError extends UploaderError {\n constructor(public response: QiniuError) {\n super(UploaderErrorName.FailedFinishQiniuUpload, response.error);\n }\n\n public Message(i18n: string): string {\n return `无法完成文件上传: ${this.message}`;\n }\n}\n\n// COS 上传失败\nexport class COSUploadError extends UploaderError {\n constructor(public response: Document) {\n super(\n UploaderErrorName.COSPostUploadFailed,\n response.getElementsByTagName(\"Message\")[0].innerHTML\n );\n }\n\n public Message(i18n: string): string {\n return `上传失败: ${this.message} (${\n this.response.getElementsByTagName(\"Code\")[0].innerHTML\n })`;\n }\n}\n\n// COS 无法完成上传回调\nexport class COSUploadCallbackError extends APIError {\n constructor(response: Response) {\n super(UploaderErrorName.COSUploadCallbackFailed, \"\", response);\n }\n\n public Message(i18n: string): string {\n this.message = `无法完成文件上传`;\n return super.Message(i18n);\n }\n}\n\n// Upyun 上传失败\nexport class UpyunUploadError extends UploaderError {\n constructor(public response: UpyunError) {\n super(UploaderErrorName.UpyunPostUploadFailed, response.message);\n }\n\n public Message(i18n: string): string {\n return `上传失败: ${this.message}`;\n }\n}\n\n// S3 无法完成上传回调\nexport class S3LikeUploadCallbackError extends APIError {\n constructor(response: Response) {\n super(UploaderErrorName.S3LikeUploadCallbackFailed, \"\", response);\n }\n\n public Message(i18n: string): string {\n this.message = `无法完成文件上传`;\n return super.Message(i18n);\n }\n}\n\n// 无法解析响应\nexport class TransformResponseError extends UploaderError {\n constructor(private response: string, parseError: Error) {\n super(UploaderErrorName.FailedTransformResponse, parseError.message);\n }\n\n public Message(i18n: string): string {\n return `无法解析响应: ${this.message} (${this.response})`;\n }\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport classNames from \"classnames\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport InfoIcon from \"@material-ui/icons/Info\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport WarningIcon from \"@material-ui/icons/Warning\";\n\nimport {\n IconButton,\n Snackbar,\n SnackbarContent,\n withStyles,\n} from \"@material-ui/core\";\n\nconst mapStateToProps = (state) => {\n return {\n snackbar: state.viewUpdate.snackbar,\n };\n};\n\nconst mapDispatchToProps = () => {\n return {};\n};\n\nconst variantIcon = {\n success: CheckCircleIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n info: InfoIcon,\n};\n\nconst styles1 = (theme) => ({\n success: {\n backgroundColor: theme.palette.success.main,\n },\n error: {\n backgroundColor: theme.palette.error.dark,\n },\n info: {\n backgroundColor: theme.palette.info.main,\n },\n warning: {\n backgroundColor: theme.palette.warning.main,\n },\n icon: {\n fontSize: 20,\n },\n iconVariant: {\n opacity: 0.9,\n marginRight: theme.spacing(1),\n },\n message: {\n display: \"flex\",\n alignItems: \"center\",\n },\n});\n\nfunction MySnackbarContent(props) {\n const { classes, className, message, onClose, variant, ...other } = props;\n const Icon = variantIcon[variant];\n\n return (\n \n \n {message}\n \n }\n action={[\n \n \n ,\n ]}\n {...other}\n />\n );\n}\nMySnackbarContent.propTypes = {\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n message: PropTypes.node,\n onClose: PropTypes.func,\n variant: PropTypes.oneOf([\"alert\", \"success\", \"warning\", \"error\", \"info\"])\n .isRequired,\n};\n\nconst MySnackbarContentWrapper = withStyles(styles1)(MySnackbarContent);\nconst styles = (theme) => ({\n margin: {\n margin: theme.spacing(1),\n },\n});\nclass SnackbarCompoment extends Component {\n state = {\n open: false,\n };\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (nextProps.snackbar.toggle !== this.props.snackbar.toggle) {\n this.setState({ open: true });\n }\n };\n\n handleClose = () => {\n this.setState({ open: false });\n };\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nconst AlertBar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(SnackbarCompoment));\n\nexport default AlertBar;\n","import { Task } from \"../types\";\nimport Logger from \"../logger\";\nimport { UploaderError, UploaderErrorName } from \"../errors\";\nimport { ChunkProgress } from \"../uploader/chunk\";\n\nexport const sizeToString = (bytes: number): string => {\n if (bytes === 0) return \"0 B\";\n const k = 1024;\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return (bytes / Math.pow(k, i)).toFixed(1) + \" \" + sizes[i];\n};\n\n// 文件分块\nexport function getChunks(\n file: File,\n chunkByteSize: number | undefined\n): Blob[] {\n // 如果 chunkByteSize 比文件大或为0,则直接取文件的大小\n if (!chunkByteSize || chunkByteSize > file.size || chunkByteSize == 0) {\n chunkByteSize = file.size;\n }\n\n const chunks: Blob[] = [];\n const count = Math.ceil(file.size / chunkByteSize);\n for (let i = 0; i < count; i++) {\n const chunk = file.slice(\n chunkByteSize * i,\n i === count - 1 ? file.size : chunkByteSize * (i + 1)\n );\n chunks.push(chunk);\n }\n\n if (chunks.length == 0) {\n chunks.push(file.slice(0));\n }\n return chunks;\n}\n\nexport function sumChunk(list: ChunkProgress[]) {\n return list.reduce((data, loaded) => data + loaded.loaded, 0);\n}\n\nconst resumeKeyPrefix = \"cd_upload_ctx_\";\n\nfunction isTask(toBeDetermined: Task | string): toBeDetermined is Task {\n return !!(toBeDetermined as Task).name;\n}\n\nexport function getResumeCtxKey(task: Task | string): string {\n if (isTask(task)) {\n return `${resumeKeyPrefix}name_${task.name}_dst_${task.dst}_size_${task.size}_policy_${task.policy.id}`;\n }\n\n return task;\n}\n\nexport function setResumeCtx(task: Task, logger: Logger) {\n const ctxKey = getResumeCtxKey(task);\n try {\n localStorage.setItem(ctxKey, JSON.stringify(task));\n } catch (err) {\n logger.warn(\n new UploaderError(\n UploaderErrorName.WriteCtxFailed,\n `setResumeCtx failed: ${ctxKey}`\n )\n );\n }\n}\n\nexport function removeResumeCtx(task: Task | string, logger: Logger) {\n const ctxKey = getResumeCtxKey(task);\n try {\n localStorage.removeItem(ctxKey);\n } catch (err) {\n logger.warn(\n new UploaderError(\n UploaderErrorName.RemoveCtxFailed,\n `removeResumeCtx failed. key: ${ctxKey}`\n )\n );\n }\n}\n\nexport function cleanupResumeCtx(logger: Logger) {\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key && key.startsWith(resumeKeyPrefix)) {\n try {\n localStorage.removeItem(key);\n } catch (err) {\n logger.warn(\n new UploaderError(\n UploaderErrorName.RemoveCtxFailed,\n `removeResumeCtx failed. key: ${key}`\n )\n );\n }\n }\n }\n}\n\nexport function getResumeCtx(task: Task | string, logger: Logger): Task | null {\n const ctxKey = getResumeCtxKey(task);\n let localInfoString: string | null = null;\n try {\n localInfoString = localStorage.getItem(ctxKey);\n } catch {\n logger.warn(\n new UploaderError(\n UploaderErrorName.ReadCtxFailed,\n `getResumeCtx failed. key: ${ctxKey}`\n )\n );\n }\n\n if (localInfoString == null) {\n return null;\n }\n\n let localInfo: Task | null = null;\n try {\n localInfo = JSON.parse(localInfoString);\n } catch {\n // 本地信息已被破坏,直接删除\n removeResumeCtx(task, logger);\n logger.warn(\n new UploaderError(\n UploaderErrorName.InvalidCtxData,\n `getResumeCtx failed to parse. key: ${ctxKey}`\n )\n );\n }\n\n if (\n localInfo &&\n localInfo.session &&\n localInfo.session.expires < Math.floor(Date.now() / 1000)\n ) {\n removeResumeCtx(task, logger);\n logger.warn(\n new UploaderError(\n UploaderErrorName.CtxExpired,\n `upload session already expired at ${localInfo.session.expires}. key: ${ctxKey}`\n )\n );\n return null;\n }\n\n return localInfo;\n}\n\nexport function listResumeCtx(logger: Logger): Task[] {\n const res: Task[] = [];\n for (let i = 0, len = localStorage.length; i < len; i++) {\n const key = localStorage.key(i);\n if (key && key.startsWith(resumeKeyPrefix)) {\n const value = getResumeCtx(key, logger);\n if (value) {\n res.push(value);\n }\n }\n }\n\n return res;\n}\n\nexport function OBJtoXML(obj: any): string {\n let xml = \"\";\n for (const prop in obj) {\n xml += \"<\" + prop + \">\";\n if (Array.isArray(obj[prop])) {\n for (const array of obj[prop]) {\n // A real botch fix here\n xml += \"\";\n xml += \"<\" + prop + \">\";\n\n xml += OBJtoXML(new Object(array));\n }\n } else if (typeof obj[prop] == \"object\") {\n xml += OBJtoXML(new Object(obj[prop]));\n } else {\n xml += obj[prop];\n }\n xml += \"\";\n }\n return xml.replace(/<\\/?[0-9]{1,}>/g, \"\");\n}\n\nexport function getFileInput(id: number, isFolder: boolean): HTMLInputElement {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.id = `upload-file-input-${id}`;\n if (isFolder) {\n input.id = `upload-folder-input-${id}`;\n input.setAttribute(\"webkitdirectory\", \"true\");\n input.setAttribute(\"mozdirectory\", \"true\");\n } else {\n input.id = `upload-file-input-${id}`;\n input.multiple = true;\n }\n input.hidden = true;\n document.body.appendChild(input);\n return input;\n}\n\nexport function pathJoin(parts: string[], sep = \"/\"): string {\n parts = parts.map((part, index) => {\n if (index) {\n part = part.replace(new RegExp(\"^\" + sep), \"\");\n }\n if (index !== parts.length - 1) {\n part = part.replace(new RegExp(sep + \"$\"), \"\");\n }\n return part;\n });\n return parts.join(sep);\n}\n\nfunction basename(path: string): string {\n const pathList = path.split(\"/\");\n pathList.pop();\n return pathList.join(\"/\") === \"\" ? \"/\" : pathList.join(\"/\");\n}\n\nexport function trimPrefix(src: string, prefix: string): string {\n if (src.startsWith(prefix)) {\n return src.slice(prefix.length);\n }\n return src;\n}\n\nexport function getDirectoryUploadDst(dst: string, file: any): string {\n let relPath = file.webkitRelativePath;\n if (!relPath || relPath == \"\") {\n relPath = file.fsPath;\n if (!relPath || relPath == \"\") {\n return dst;\n }\n }\n\n relPath = trimPrefix(relPath, \"/\");\n\n return basename(pathJoin([dst, relPath]));\n}\n\n// Wrap readEntries in a promise to make working with readEntries easier\nasync function readEntriesPromise(directoryReader: any): Promise {\n try {\n return await new Promise((resolve, reject) => {\n directoryReader.readEntries(resolve, reject);\n });\n } catch (err) {\n console.log(err);\n }\n}\n\nasync function readFilePromise(fileReader: any, path: string): Promise {\n try {\n return await new Promise((resolve, reject) => {\n fileReader.file((file: any) => {\n file.fsPath = path;\n resolve(file);\n });\n });\n } catch (err) {\n console.log(err);\n }\n}\n\n// Get all the entries (files or sub-directories) in a directory by calling readEntries until it returns empty array\nasync function readAllDirectoryEntries(directoryReader: any): Promise {\n const entries: any[] = [];\n let readEntries = await readEntriesPromise(directoryReader);\n while (readEntries.length > 0) {\n entries.push(...readEntries);\n readEntries = await readEntriesPromise(directoryReader);\n }\n return entries;\n}\n\n// Drop handler function to get all files\nexport async function getAllFileEntries(\n dataTransferItemList: DataTransferItemList\n): Promise {\n const fileEntries: any[] = [];\n // Use BFS to traverse entire directory/file structure\n const queue: any[] = [];\n // Unfortunately dataTransferItemList is not iterable i.e. no forEach\n for (let i = 0; i < dataTransferItemList.length; i++) {\n const fileEntry = dataTransferItemList[i].webkitGetAsEntry();\n if (!fileEntry) {\n const file = dataTransferItemList[i].getAsFile();\n if (file) {\n fileEntries.push(file);\n }\n }\n\n queue.push(dataTransferItemList[i].webkitGetAsEntry());\n }\n while (queue.length > 0) {\n const entry = queue.shift();\n if (!entry) {\n continue;\n }\n if (entry.isFile) {\n fileEntries.push(await readFilePromise(entry, entry.fullPath));\n } else if (entry.isDirectory) {\n const reader = entry.createReader();\n const entries: any = await readAllDirectoryEntries(reader);\n queue.push(...entries);\n }\n }\n return fileEntries;\n}\n\nexport function isFileDrop(e: DragEvent): boolean {\n return !!e.dataTransfer && e.dataTransfer.types.includes(\"Files\");\n}\n","export * from \"./pool\";\nexport * from \"./helper\";\nexport * from \"./validator\";\nexport * from \"./request\";\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport {\n LogoutVariant,\n HomeAccount,\n DesktopMacDashboard,\n AccountArrowRight,\n AccountPlus,\n} from \"mdi-material-ui\";\nimport { withRouter } from \"react-router-dom\";\nimport Auth from \"../../middleware/Auth\";\nimport {\n withStyles,\n Avatar,\n Popover,\n Typography,\n Chip,\n ListItemIcon,\n MenuItem,\n Divider,\n} from \"@material-ui/core\";\nimport API from \"../../middleware/Api\";\nimport pathHelper from \"../../utils/page\";\nimport { setSessionStatus, setUserPopover, toggleSnackbar } from \"../../redux/explorer\";\n\nconst mapStateToProps = (state) => {\n return {\n anchorEl: state.viewUpdate.userPopoverAnchorEl,\n registerEnabled: state.siteConfig.registerEnabled,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n setUserPopover: (anchor) => {\n dispatch(setUserPopover(anchor));\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n setSessionStatus: (status) => {\n dispatch(setSessionStatus(status));\n },\n };\n};\nconst styles = () => ({\n avatar: {\n width: \"30px\",\n height: \"30px\",\n },\n header: {\n display: \"flex\",\n padding: \"20px 20px 20px 20px\",\n },\n largeAvatar: {\n height: \"90px\",\n width: \"90px\",\n },\n info: {\n marginLeft: \"10px\",\n width: \"139px\",\n },\n badge: {\n marginTop: \"10px\",\n },\n visitorMenu: {\n width: 200,\n },\n});\n\nclass UserAvatarPopoverCompoment extends Component {\n handleClose = () => {\n this.props.setUserPopover(null);\n };\n\n openURL = (url) => {\n window.location.href = url;\n };\n\n sigOut = () => {\n API.delete(\"/user/session/\")\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"您已退出登录\",\n \"success\"\n );\n Auth.signout();\n window.location.reload();\n this.props.setSessionStatus(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"warning\"\n );\n })\n .then(() => {\n this.handleClose();\n });\n };\n\n render() {\n const { classes } = this.props;\n const user = Auth.GetUser();\n const isAdminPage = pathHelper.isAdminPage(\n this.props.location.pathname\n );\n\n return (\n \n {!Auth.Check() && (\n
\n \n this.props.history.push(\"/login\")}\n >\n \n \n \n 登录\n \n {this.props.registerEnabled && (\n this.props.history.push(\"/signup\")}\n >\n \n \n \n 注册\n \n )}\n
\n )}\n {Auth.Check() && (\n
\n
\n
\n \n
\n
\n {user.nickname}\n \n {user.user_name}\n \n \n
\n
\n
\n \n {!isAdminPage && (\n {\n this.handleClose();\n this.props.history.push(\n \"/profile/\" + user.id\n );\n }}\n >\n \n \n \n 个人主页\n \n )}\n {user.group.id === 1 && (\n {\n this.handleClose();\n this.props.history.push(\"/admin/home\");\n }}\n >\n \n \n \n 管理面板\n \n )}\n\n \n \n \n \n 退出登录\n \n
\n
\n )}\n \n );\n }\n}\n\nUserAvatarPopoverCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst UserAvatarPopover = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(UserAvatarPopoverCompoment)));\n\nexport default UserAvatarPopover;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport SettingIcon from \"@material-ui/icons/Settings\";\nimport UserAvatarPopover from \"./UserAvatarPopover\";\nimport { AccountCircle } from \"mdi-material-ui\";\nimport Auth from \"../../middleware/Auth\";\nimport {\n withStyles,\n Grow,\n Avatar,\n IconButton,\n Tooltip,\n} from \"@material-ui/core\";\nimport { withRouter } from \"react-router-dom\";\nimport pathHelper from \"../../utils/page\";\nimport DarkModeSwitcher from \"./DarkModeSwitcher\";\nimport PolicySwitcher from \"./PolicySwitcher\";\nimport { Home } from \"@material-ui/icons\";\nimport { setUserPopover } from \"../../redux/explorer\";\n\nconst mapStateToProps = (state) => {\n return {\n selected: state.explorer.selected,\n isMultiple: state.explorer.selectProps.isMultiple,\n withFolder: state.explorer.selectProps.withFolder,\n withFile: state.explorer.selectProps.withFile,\n isLogin: state.viewUpdate.isLogin,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n setUserPopover: (anchor) => {\n dispatch(setUserPopover(anchor));\n },\n };\n};\n\nconst styles = (theme) => ({\n mobileHidden: {\n [theme.breakpoints.down(\"xs\")]: {\n display: \"none\",\n },\n whiteSpace: \"nowrap\",\n },\n avatar: {\n width: \"30px\",\n height: \"30px\",\n },\n header: {\n display: \"flex\",\n padding: \"20px 20px 20px 20px\",\n },\n largeAvatar: {\n height: \"90px\",\n width: \"90px\",\n },\n info: {\n marginLeft: \"10px\",\n width: \"139px\",\n },\n badge: {\n marginTop: \"10px\",\n },\n visitorMenu: {\n width: 200,\n },\n});\n\nclass UserAvatarCompoment extends Component {\n state = {\n anchorEl: null,\n };\n\n showUserInfo = (e) => {\n this.props.setUserPopover(e.currentTarget);\n };\n\n handleClose = () => {\n this.setState({\n anchorEl: null,\n });\n };\n\n openURL = (url) => {\n window.location.href = url;\n };\n\n returnHome = () => {\n window.location.href = \"/home\";\n };\n\n render() {\n const { classes } = this.props;\n const loginCheck = Auth.Check(this.props.isLogin);\n const user = Auth.GetUser(this.props.isLogin);\n const isAdminPage = pathHelper.isAdminPage(\n this.props.location.pathname\n );\n\n return (\n
\n \n
\n {!isAdminPage && (\n <>\n \n {loginCheck && (\n <>\n \n \n \n this.props.history.push(\n \"/setting?\"\n )\n }\n color=\"inherit\"\n >\n \n \n \n \n )}\n \n )}\n {isAdminPage && (\n \n \n \n \n \n )}\n \n {!loginCheck && }\n {loginCheck && (\n \n )}\n {\" \"}\n
\n \n \n
\n );\n }\n}\n\nUserAvatarCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst UserAvatar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(UserAvatarCompoment)));\n\nexport default UserAvatar;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport classNames from \"classnames\";\nimport { connect } from \"react-redux\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport MusicNote from \"@material-ui/icons/MusicNote\";\nimport BackIcon from \"@material-ui/icons/ArrowBack\";\nimport SdStorage from \"@material-ui/icons/SdStorage\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport DownloadIcon from \"@material-ui/icons/CloudDownload\";\nimport RenameIcon from \"@material-ui/icons/BorderColor\";\nimport MoveIcon from \"@material-ui/icons/Input\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport MenuIcon from \"@material-ui/icons/Menu\";\nimport { isPreviewable } from \"../../config\";\nimport { changeThemeColor, sizeToString, vhCheck } from \"../../utils\";\nimport Uploader from \"../Uploader/Uploader.js\";\nimport pathHelper from \"../../utils/page\";\nimport SezrchBar from \"./SearchBar\";\nimport StorageBar from \"./StorageBar\";\nimport UserAvatar from \"./UserAvatar\";\nimport UserInfo from \"./UserInfo\";\nimport { AccountArrowRight, AccountPlus, LogoutVariant } from \"mdi-material-ui\";\nimport { withRouter } from \"react-router-dom\";\nimport {\n AppBar,\n Drawer,\n Grow,\n Hidden,\n IconButton,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n SwipeableDrawer,\n Toolbar,\n Tooltip,\n Typography,\n withStyles,\n withTheme,\n} from \"@material-ui/core\";\nimport Auth from \"../../middleware/Auth\";\nimport API from \"../../middleware/Api\";\nimport FileTag from \"./FileTags\";\nimport { Assignment, Devices, MoreHoriz, Settings } from \"@material-ui/icons\";\nimport Divider from \"@material-ui/core/Divider\";\nimport SubActions from \"../FileManager/Navigator/SubActions\";\nimport {\n audioPreviewSetIsOpen,\n changeContextMenu,\n drawerToggleAction,\n navigateTo,\n openCreateFolderDialog,\n openLoadingDialog,\n openMoveDialog,\n openMusicDialog,\n openPreview,\n openRemoveDialog,\n openRenameDialog,\n openShareDialog,\n saveFile,\n setSelectedTarget,\n setSessionStatus,\n showImgPreivew,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { startBatchDownload, startDownload } from \"../../redux/explorer/action\";\nimport PolicySwitcher from \"./PolicySwitcher\";\n\nvhCheck();\nconst drawerWidth = 240;\nconst drawerWidthMobile = 270;\n\nconst mapStateToProps = (state) => {\n return {\n desktopOpen: state.viewUpdate.open,\n selected: state.explorer.selected,\n isMultiple: state.explorer.selectProps.isMultiple,\n withFolder: state.explorer.selectProps.withFolder,\n withFile: state.explorer.selectProps.withFile,\n path: state.navigator.path,\n title: state.siteConfig.title,\n subTitle: state.viewUpdate.subTitle,\n loadUploader: state.viewUpdate.loadUploader,\n isLogin: state.viewUpdate.isLogin,\n shareInfo: state.viewUpdate.shareInfo,\n registerEnabled: state.siteConfig.registerEnabled,\n audioPreviewPlayingName: state.explorer.audioPreview.playingName,\n audioPreviewIsOpen: state.explorer.audioPreview.isOpen,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n handleDesktopToggle: (open) => {\n dispatch(drawerToggleAction(open));\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n navigateTo: (path) => {\n dispatch(navigateTo(path));\n },\n openCreateFolderDialog: () => {\n dispatch(openCreateFolderDialog());\n },\n changeContextMenu: (type, open) => {\n dispatch(changeContextMenu(type, open));\n },\n saveFile: () => {\n dispatch(saveFile());\n },\n openMusicDialog: () => {\n dispatch(openMusicDialog());\n },\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n openRenameDialog: () => {\n dispatch(openRenameDialog());\n },\n openMoveDialog: () => {\n dispatch(openMoveDialog());\n },\n openRemoveDialog: () => {\n dispatch(openRemoveDialog());\n },\n openShareDialog: () => {\n dispatch(openShareDialog());\n },\n openLoadingDialog: (text) => {\n dispatch(openLoadingDialog(text));\n },\n setSessionStatus: () => {\n dispatch(setSessionStatus());\n },\n openPreview: (share) => {\n dispatch(openPreview(share));\n },\n audioPreviewOpen: () => {\n dispatch(audioPreviewSetIsOpen(true));\n },\n startBatchDownload: (share) => {\n dispatch(startBatchDownload(share));\n },\n startDownload: (share, file) => {\n dispatch(startDownload(share, file));\n },\n };\n};\n\nconst styles = (theme) => ({\n appBar: {\n marginLeft: drawerWidth,\n [theme.breakpoints.down(\"xs\")]: {\n marginLeft: drawerWidthMobile,\n },\n zIndex: theme.zIndex.drawer + 1,\n transition: \" background-color 250ms\",\n },\n\n drawer: {\n width: 0,\n flexShrink: 0,\n },\n drawerDesktop: {\n width: drawerWidth,\n flexShrink: 0,\n },\n icon: {\n marginRight: theme.spacing(2),\n },\n menuButton: {\n marginRight: 20,\n [theme.breakpoints.up(\"sm\")]: {\n display: \"none\",\n },\n },\n menuButtonDesktop: {\n marginRight: 20,\n [theme.breakpoints.down(\"xs\")]: {\n display: \"none\",\n },\n },\n menuIcon: {\n marginRight: 20,\n },\n toolbar: theme.mixins.toolbar,\n drawerPaper: {\n width: drawerWidthMobile,\n },\n drawerPaperDesktop: {\n width: drawerWidth,\n },\n upDrawer: {\n overflowX: \"hidden\",\n [theme.breakpoints.up(\"sm\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n justifyContent: \"space-between\",\n },\n },\n drawerOpen: {\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n drawerClose: {\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n overflowX: \"hidden\",\n width: 0,\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n },\n grow: {\n flexGrow: 1,\n },\n badge: {\n top: 1,\n right: -15,\n },\n nested: {\n paddingLeft: theme.spacing(4),\n },\n sectionForFile: {\n display: \"flex\",\n },\n extendedIcon: {\n marginRight: theme.spacing(1),\n },\n addButton: {\n marginLeft: \"40px\",\n marginTop: \"25px\",\n marginBottom: \"15px\",\n },\n fabButton: {\n borderRadius: \"100px\",\n },\n badgeFix: {\n right: \"10px\",\n },\n iconFix: {\n marginLeft: \"16px\",\n },\n dividerFix: {\n marginTop: \"8px\",\n },\n folderShareIcon: {\n verticalAlign: \"sub\",\n marginRight: \"5px\",\n },\n shareInfoContainer: {\n display: \"flex\",\n marginTop: \"15px\",\n marginBottom: \"20px\",\n marginLeft: \"28px\",\n textDecoration: \"none\",\n },\n shareAvatar: {\n width: \"40px\",\n height: \"40px\",\n },\n stickFooter: {\n bottom: \"0px\",\n position: \"absolute\",\n backgroundColor: theme.palette.background.paper,\n width: \"100%\",\n },\n ownerInfo: {\n marginLeft: \"10px\",\n width: \"150px\",\n },\n minStickDrawer: {\n overflowY: \"auto\",\n },\n});\nclass NavbarCompoment extends Component {\n constructor(props) {\n super(props);\n this.state = {\n mobileOpen: false,\n };\n this.UploaderRef = React.createRef();\n }\n\n UNSAFE_componentWillMount() {\n this.unlisten = this.props.history.listen(() => {\n this.setState(() => ({ mobileOpen: false }));\n });\n }\n componentWillUnmount() {\n this.unlisten();\n }\n\n componentDidMount = () => {\n changeThemeColor(\n this.props.selected.length <= 1 &&\n !(!this.props.isMultiple && this.props.withFile)\n ? this.props.theme.palette.primary.main\n : this.props.theme.palette.background.default\n );\n };\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (\n (this.props.selected.length === 0) !==\n (nextProps.selected.length === 0)\n ) {\n changeThemeColor(\n !(this.props.selected.length === 0)\n ? this.props.theme.palette.type === \"dark\"\n ? this.props.theme.palette.background.default\n : this.props.theme.palette.primary.main\n : this.props.theme.palette.background.default\n );\n }\n };\n\n handleDrawerToggle = () => {\n this.setState((state) => ({ mobileOpen: !state.mobileOpen }));\n };\n\n openDownload = () => {\n this.props.startDownload(this.props.shareInfo, this.props.selected[0]);\n };\n\n archiveDownload = (e) => {\n this.props.startBatchDownload(this.props.shareInfo);\n };\n\n signOut = () => {\n API.delete(\"/user/session/\")\n .then(() => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"您已退出登录\",\n \"success\"\n );\n Auth.signout();\n window.location.reload();\n this.props.setSessionStatus(false);\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"warning\"\n );\n })\n .finally(() => {\n this.handleClose();\n });\n };\n\n render() {\n const { classes } = this.props;\n const user = Auth.GetUser(this.props.isLogin);\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n const isSharePage = pathHelper.isSharePage(\n this.props.location.pathname\n );\n\n const drawer = (\n
\n {pathHelper.isMobile() && }\n\n {Auth.Check(this.props.isLogin) && (\n <>\n
\n \n \n \n this.props.history.push(\"/shares?\")\n }\n >\n \n \n \n \n \n \n this.props.history.push(\"/aria2?\")\n }\n >\n \n \n \n \n \n \n this.props.history.push(\"/quota?\")\n }\n >\n \n \n \n \n \n \n this.props.history.push(\"/connect?\")\n }\n >\n \n \n \n \n \n\n \n this.props.history.push(\"/tasks?\")\n }\n >\n \n \n \n \n \n {pathHelper.isMobile() && (\n <>\n \n \n this.props.history.push(\n \"/setting?\"\n )\n }\n >\n \n \n \n \n \n\n \n \n \n \n \n \n \n )}\n \n
\n
\n \n
\n \n )}\n\n {!Auth.Check(this.props.isLogin) && (\n
\n this.props.history.push(\"/login\")}\n >\n \n \n \n \n \n {this.props.registerEnabled && (\n \n this.props.history.push(\"/signup\")\n }\n >\n \n \n \n \n \n )}\n
\n )}\n
\n );\n const iOS =\n process.browser && /iPad|iPhone|iPod/.test(navigator.userAgent);\n return (\n
\n \n \n {this.props.selected.length === 0 && (\n \n \n \n )}\n {this.props.selected.length === 0 && (\n \n this.props.handleDesktopToggle(\n !this.props.desktopOpen\n )\n }\n className={classes.menuButtonDesktop}\n >\n \n \n )}\n {this.props.selected.length > 0 &&\n (isHomePage ||\n pathHelper.isSharePage(\n this.props.location.pathname\n )) && (\n 0}>\n \n this.props.setSelectedTarget([])\n }\n >\n \n \n \n )}\n {this.props.selected.length === 0 && (\n {\n this.props.history.push(\"/\");\n }}\n >\n {this.props.subTitle\n ? this.props.subTitle\n : this.props.title}\n \n )}\n\n {!this.props.isMultiple &&\n (this.props.withFile || this.props.withFolder) &&\n !pathHelper.isMobile() && (\n \n {this.props.selected[0].name}{\" \"}\n {this.props.withFile &&\n (isHomePage ||\n pathHelper.isSharePage(\n this.props.location.pathname\n )) &&\n \"(\" +\n sizeToString(\n this.props.selected[0].size\n ) +\n \")\"}\n \n )}\n\n {this.props.selected.length > 1 &&\n !pathHelper.isMobile() && (\n \n {this.props.selected.length} 个对象\n \n )}\n {this.props.selected.length === 0 && }\n
\n {this.props.selected.length > 0 &&\n (isHomePage || isSharePage) && (\n
\n {!this.props.isMultiple &&\n this.props.withFile &&\n isPreviewable(\n this.props.selected[0].name\n ) && (\n \n \n \n this.props.openPreview(\n this.props\n .shareInfo\n )\n }\n >\n \n \n \n \n )}\n {!this.props.isMultiple &&\n this.props.withFile && (\n \n \n \n this.openDownload()\n }\n >\n \n \n \n \n )}\n {(this.props.isMultiple ||\n this.props.withFolder) && (\n \n \n \n this.archiveDownload()\n }\n >\n \n \n \n \n )}\n {!this.props.isMultiple &&\n !pathHelper.isMobile() &&\n !isSharePage && (\n \n \n \n this.props.openShareDialog()\n }\n >\n \n \n \n \n )}\n {!this.props.isMultiple && !isSharePage && (\n \n \n \n this.props.openRenameDialog()\n }\n >\n \n \n \n \n )}\n {!isSharePage && (\n
\n {!pathHelper.isMobile() && (\n \n \n \n this.props.openMoveDialog()\n }\n >\n \n \n \n \n )}\n\n \n \n \n this.props.openRemoveDialog()\n }\n >\n \n \n \n \n\n {pathHelper.isMobile() && (\n \n \n \n this.props.changeContextMenu(\n \"file\",\n true\n )\n }\n >\n \n \n \n \n )}\n
\n )}\n
\n )}\n {this.props.selected.length <= 1 &&\n !(!this.props.isMultiple && this.props.withFile) &&\n this.props.audioPreviewPlayingName != null && (\n \n \n \n )}\n\n {this.props.selected.length === 0 && }\n {this.props.selected.length === 0 &&\n pathHelper.isMobile() && (\n <>\n {isHomePage && }\n {(isHomePage || this.props.shareInfo) && (\n \n )}\n \n )}\n \n \n \n\n \n \n this.setState(() => ({ mobileOpen: true }))\n }\n disableDiscovery={iOS}\n ModalProps={{\n keepMounted: true, // Better open performance on mobile.\n }}\n >\n {drawer}\n \n \n \n \n
\n {drawer}\n \n \n
\n );\n }\n}\nNavbarCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n theme: PropTypes.object.isRequired,\n};\n\nconst Navbar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withTheme(withStyles(styles)(withRouter(NavbarCompoment))));\n\nexport default Navbar;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport { fade } from \"@material-ui/core/styles/colorManipulator\";\nimport FileIcon from \"@material-ui/icons/InsertDriveFile\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport { connect } from \"react-redux\";\n\nimport {\n Fade,\n InputBase,\n ListItemIcon,\n ListItemText,\n MenuItem,\n Paper,\n Popper,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport { withRouter } from \"react-router\";\nimport pathHelper from \"../../utils/page\";\nimport { configure, HotKeys } from \"react-hotkeys\";\nimport { searchMyFile } from \"../../redux/explorer\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\n\nconfigure({\n ignoreTags: [],\n});\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n search: state.explorer.search,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n searchMyFile: (keywords, path) => {\n dispatch(searchMyFile(keywords, path));\n },\n };\n};\n\nconst styles = (theme) => ({\n search: {\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n position: \"relative\",\n borderRadius: theme.shape.borderRadius,\n backgroundColor: fade(theme.palette.common.white, 0.15),\n \"&:hover\": {\n backgroundColor: fade(theme.palette.common.white, 0.25),\n },\n marginRight: theme.spacing(2),\n marginLeft: 0,\n width: \"100%\",\n [theme.breakpoints.up(\"sm\")]: {\n marginLeft: theme.spacing(7.2),\n width: \"auto\",\n },\n },\n searchIcon: {\n width: theme.spacing(9),\n height: \"100%\",\n position: \"absolute\",\n pointerEvents: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n inputRoot: {\n color: \"inherit\",\n width: \"100%\",\n },\n inputInput: {\n paddingTop: theme.spacing(1),\n paddingRight: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n paddingLeft: theme.spacing(7),\n transition: theme.transitions.create(\"width\"),\n width: \"100%\",\n [theme.breakpoints.up(\"md\")]: {\n width: 200,\n \"&:focus\": {\n width: 300,\n },\n },\n },\n suggestBox: {\n zIndex: \"9999\",\n width: 364,\n },\n});\n\nconst keyMap = {\n SEARCH: \"enter\",\n};\n\nclass SearchBarCompoment extends Component {\n constructor(props) {\n super(props);\n this.state = {\n anchorEl: null,\n input: \"\",\n };\n }\n\n handlers = {\n SEARCH: (e) => {\n if (pathHelper.isHomePage(this.props.location.pathname)) {\n this.searchMyFile(\"\")();\n } else {\n this.searchShare();\n }\n e.target.blur();\n },\n };\n\n handleChange = (event) => {\n const { currentTarget } = event;\n this.input = event.target.value;\n this.setState({\n anchorEl: currentTarget,\n input: event.target.value,\n });\n };\n\n cancelSuggest = () => {\n this.setState({\n input: \"\",\n });\n };\n\n searchMyFile = (path) => () => {\n this.props.searchMyFile(\"keywords/\" + this.input, path);\n };\n\n searchShare = () => {\n this.props.history.push(\n \"/search?keywords=\" + encodeURIComponent(this.input)\n );\n };\n\n render() {\n const { classes } = this.props;\n const { anchorEl } = this.state;\n const id = this.state.input !== \"\" ? \"simple-popper\" : null;\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n\n return (\n
\n
\n \n
\n \n \n \n \n {({ TransitionProps }) => (\n \n \n {isHomePage && (\n \n \n \n \n \n 在我的文件中搜索{\" \"}\n \n {this.state.input}\n \n \n }\n />\n \n )}\n\n {isHomePage &&\n this.props.path !== \"/\" &&\n !this.props.search && (\n \n \n \n \n \n 在当前目录中搜索{\" \"}\n \n {this.state.input}\n \n \n }\n />\n \n )}\n\n \n \n \n \n \n 在全站分享中搜索{\" \"}\n \n {this.state.input}\n \n \n }\n />\n \n \n \n )}\n \n
\n );\n }\n}\n\nSearchBarCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst SearchBar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(SearchBarCompoment)));\n\nexport default SearchBar;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport StorageIcon from \"@material-ui/icons/Storage\";\nimport { connect } from \"react-redux\";\nimport API from \"../../middleware/Api\";\nimport { sizeToString } from \"../../utils\";\n\nimport {\n Divider,\n LinearProgress,\n Tooltip,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport ButtonBase from \"@material-ui/core/ButtonBase\";\nimport Link from \"@material-ui/core/Link\";\nimport { withRouter } from \"react-router\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\n\nconst mapStateToProps = (state) => {\n return {\n refresh: state.viewUpdate.storageRefresh,\n isLogin: state.viewUpdate.isLogin,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nconst styles = (theme) => ({\n iconFix: {\n marginLeft: \"32px\",\n marginRight: \"17px\",\n color: theme.palette.text.secondary,\n marginTop: \"2px\",\n },\n textFix: {\n padding: \" 0 0 0 16px\",\n },\n storageContainer: {\n display: \"flex\",\n marginTop: \"15px\",\n textAlign: \"left\",\n marginBottom: \"11px\",\n },\n detail: {\n width: \"100%\",\n marginRight: \"35px\",\n },\n info: {\n width: \"131px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n [theme.breakpoints.down(\"xs\")]: {\n width: \"162px\",\n },\n marginTop: \"5px\",\n },\n bar: {\n marginTop: \"5px\",\n },\n stickFooter: {\n backgroundColor: theme.palette.background.paper,\n },\n});\n\n// TODO 使用 hooks 重构\nclass StorageBarCompoment extends Component {\n state = {\n percent: 0,\n used: null,\n total: null,\n showExpand: false,\n };\n\n firstLoad = true;\n\n componentDidMount = () => {\n if (this.firstLoad && this.props.isLogin) {\n this.firstLoad = !this.firstLoad;\n this.updateStatus();\n }\n };\n\n componentWillUnmount() {\n this.firstLoad = false;\n }\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (\n (this.props.isLogin && this.props.refresh !== nextProps.refresh) ||\n (this.props.isLogin !== nextProps.isLogin && nextProps.isLogin)\n ) {\n this.updateStatus();\n }\n };\n\n updateStatus = () => {\n let percent = 0;\n API.get(\"/user/storage\")\n .then((response) => {\n if (response.data.used / response.data.total >= 1) {\n percent = 100;\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"您的已用容量已超过容量配额,请尽快删除多余文件或购买容量\",\n \"warning\"\n );\n } else {\n percent = (response.data.used / response.data.total) * 100;\n }\n this.setState({\n percent: percent,\n used: sizeToString(response.data.used),\n total: sizeToString(response.data.total),\n });\n })\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n .catch(() => {});\n };\n\n render() {\n const { classes } = this.props;\n return (\n this.setState({ showExpand: true })}\n onMouseLeave={() => this.setState({ showExpand: false })}\n className={classes.stickFooter}\n >\n \n this.props.history.push(\"/quota\")}>\n
\n \n
\n 存储空间{\" \"}\n {this.state.showExpand && (\n \n 扩容\n \n )}\n \n
\n \n \n {this.state.used === null\n ? \" -- \"\n : this.state.used}\n {\" / \"}\n {this.state.total === null\n ? \" -- \"\n : this.state.total}\n \n \n
\n
\n
\n
\n
\n );\n }\n}\n\nStorageBarCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst StorageBar = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(StorageBarCompoment)));\n\nexport default StorageBar;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { Typography, withStyles } from \"@material-ui/core\";\nimport Auth from \"../../middleware/Auth\";\nimport DarkModeSwitcher from \"./DarkModeSwitcher\";\nimport Avatar from \"@material-ui/core/Avatar\";\nimport { setUserPopover } from \"../../redux/explorer\";\n\nconst mapStateToProps = (state) => {\n return {\n isLogin: state.viewUpdate.isLogin,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n setUserPopover: (anchor) => {\n dispatch(setUserPopover(anchor));\n },\n };\n};\n\nconst styles = (theme) => ({\n userNav: {\n height: \"170px\",\n backgroundColor: theme.palette.primary.main,\n padding: \"20px 20px 2em\",\n backgroundImage:\n \"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 900'%3E%3Cpolygon fill='\" +\n theme.palette.primary.light.replace(\"#\", \"%23\") +\n \"' points='957 450 539 900 1396 900'/%3E%3Cpolygon fill='\" +\n theme.palette.primary.dark.replace(\"#\", \"%23\") +\n \"' points='957 450 872.9 900 1396 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\n \"' points='-60 900 398 662 816 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\n \"' points='337 900 398 662 816 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.light.replace(\"#\", \"%23\") +\n \"' points='1203 546 1552 900 876 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\n \"' points='1203 546 1552 900 1162 900'/%3E%3Cpolygon fill='\" +\n theme.palette.primary.dark.replace(\"#\", \"%23\") +\n \"' points='641 695 886 900 367 900'/%3E%3Cpolygon fill='\" +\n theme.palette.primary.main.replace(\"#\", \"%23\") +\n \"' points='587 900 641 695 886 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.light.replace(\"#\", \"%23\") +\n \"' points='1710 900 1401 632 1096 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\n \"' points='1710 900 1401 632 1365 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.main.replace(\"#\", \"%23\") +\n \"' points='1210 900 971 687 725 900'/%3E%3Cpolygon fill='\" +\n theme.palette.secondary.dark.replace(\"#\", \"%23\") +\n \"' points='943 900 1210 900 971 687'/%3E%3C/svg%3E\\\")\",\n backgroundSize: \"cover\",\n },\n avatar: {\n display: \"block\",\n width: \"70px\",\n height: \"70px\",\n border: \" 2px solid #fff\",\n borderRadius: \"50%\",\n overflow: \"hidden\",\n boxShadow:\n \"0 2px 5px 0 rgba(0,0,0,0.16), 0 2px 10px 0 rgba(0,0,0,0.12)\",\n },\n avatarImg: {\n width: \"66px\",\n height: \"66px\",\n },\n nickName: {\n color: \"#fff\",\n marginLeft: \"10px\",\n marginTop: \"15px\",\n fontSize: \"17px\",\n },\n flexAvatar: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n },\n groupName: {\n marginLeft: \"10px\",\n color: \"#ffffff\",\n opacity: \"0.54\",\n },\n storageCircle: {\n width: \"200px\",\n },\n});\n\nclass UserInfoCompoment extends Component {\n showUserInfo = (e) => {\n this.props.setUserPopover(e.currentTarget);\n };\n\n render() {\n const { classes } = this.props;\n const isLogin = Auth.Check(this.props.isLogin);\n const user = Auth.GetUser(this.props.isLogin);\n\n return (\n
\n
\n {/* eslint-disable-next-line */}\n \n {isLogin && (\n \n )}\n {!isLogin && (\n \n )}\n \n \n
\n
\n \n {isLogin ? user.nickname : \"未登录\"}\n \n \n {isLogin ? user.group.name : \"游客\"}\n \n
\n
\n );\n }\n}\n\nUserInfoCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst UserInfo = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(UserInfoCompoment));\n\nexport default UserInfo;\n","import React, { Suspense, useCallback, useState } from \"react\";\nimport {\n Divider,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n makeStyles,\n withStyles,\n} from \"@material-ui/core\";\nimport { Clear, KeyboardArrowRight } from \"@material-ui/icons\";\nimport classNames from \"classnames\";\nimport FolderShared from \"@material-ui/icons/FolderShared\";\nimport UploadIcon from \"@material-ui/icons/CloudUpload\";\nimport VideoIcon from \"@material-ui/icons/VideoLibraryOutlined\";\nimport ImageIcon from \"@material-ui/icons/CollectionsOutlined\";\nimport MusicIcon from \"@material-ui/icons/LibraryMusicOutlined\";\nimport DocIcon from \"@material-ui/icons/FileCopyOutlined\";\nimport { useHistory, useLocation } from \"react-router\";\nimport pathHelper from \"../../utils/page\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport { useDispatch } from \"react-redux\";\nimport Auth from \"../../middleware/Auth\";\nimport {\n Circle,\n CircleOutline,\n FolderHeartOutline,\n Heart,\n HeartOutline,\n Hexagon,\n HexagonOutline,\n Hexagram,\n HexagramOutline,\n Rhombus,\n RhombusOutline,\n Square,\n SquareOutline,\n TagPlus,\n Triangle,\n TriangleOutline,\n} from \"mdi-material-ui\";\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport API from \"../../middleware/Api\";\nimport { navigateTo, searchMyFile, toggleSnackbar } from \"../../redux/explorer\";\n\nconst ExpansionPanel = withStyles({\n root: {\n maxWidth: \"100%\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": { margin: 0 },\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n minHeight: 0,\n padding: 0,\n\n \"&$expanded\": {\n minHeight: 0,\n },\n },\n content: {\n maxWidth: \"100%\",\n margin: 0,\n display: \"block\",\n \"&$expanded\": {\n margin: \"0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n display: \"block\",\n padding: theme.spacing(0),\n },\n}))(MuiExpansionPanelDetails);\n\nconst useStyles = makeStyles((theme) => ({\n expand: {\n display: \"none\",\n transition: \".15s all ease-in-out\",\n },\n expanded: {\n display: \"block\",\n transform: \"rotate(90deg)\",\n },\n iconFix: {\n marginLeft: \"16px\",\n },\n hiddenButton: {\n display: \"none\",\n },\n subMenu: {\n marginLeft: theme.spacing(2),\n },\n overFlow: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n}));\n\nconst icons = {\n Circle: Circle,\n CircleOutline: CircleOutline,\n Heart: Heart,\n HeartOutline: HeartOutline,\n Hexagon: Hexagon,\n HexagonOutline: HexagonOutline,\n Hexagram: Hexagram,\n HexagramOutline: HexagramOutline,\n Rhombus: Rhombus,\n RhombusOutline: RhombusOutline,\n Square: Square,\n SquareOutline: SquareOutline,\n Triangle: Triangle,\n TriangleOutline: TriangleOutline,\n FolderHeartOutline: FolderHeartOutline,\n};\n\nconst AddTag = React.lazy(() => import(\"../Modals/AddTag\"));\n\nexport default function FileTag() {\n const classes = useStyles();\n\n const location = useLocation();\n const history = useHistory();\n\n const isHomePage = pathHelper.isHomePage(location.pathname);\n\n const [tagOpen, setTagOpen] = useState(true);\n const [addTagModal, setAddTagModal] = useState(false);\n const [tagHover, setTagHover] = useState(null);\n const [tags, setTags] = useState(\n Auth.GetUser().tags ? Auth.GetUser().tags : []\n );\n\n const dispatch = useDispatch();\n const SearchMyFile = useCallback((k, p) => dispatch(searchMyFile(k, p)), [\n dispatch,\n ]);\n const NavigateTo = useCallback((k) => dispatch(navigateTo(k)), [dispatch]);\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const getIcon = (icon, color) => {\n if (icons[icon]) {\n const IconComponent = icons[icon];\n return (\n \n );\n }\n return ;\n };\n\n const submitSuccess = (tag) => {\n const newTags = [...tags, tag];\n setTags(newTags);\n const user = Auth.GetUser();\n user.tags = newTags;\n Auth.SetUser(user);\n };\n\n const submitDelete = (id) => {\n API.delete(\"/tag/\" + id)\n .then(() => {\n const newTags = tags.filter((v) => {\n return v.id !== id;\n });\n setTags(newTags);\n const user = Auth.GetUser();\n user.tags = newTags;\n Auth.SetUser(user);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n return (\n <>\n \n setAddTagModal(false)}\n />\n \n isHomePage && setTagOpen(!tagOpen)}\n >\n \n \n !isHomePage && history.push(\"/home?path=%2F\")\n }\n >\n \n \n {!(tagOpen && isHomePage) && (\n \n )}\n \n \n \n \n \n\n \n setTagHover(null)}>\n \n \n \n \n \n \n \n \n \n \n \n \n {[\n {\n key: \"视频\",\n id: \"video\",\n icon: (\n \n ),\n },\n {\n key: \"图片\",\n id: \"image\",\n icon: (\n \n ),\n },\n {\n key: \"音频\",\n id: \"audio\",\n icon: (\n \n ),\n },\n {\n key: \"文档\",\n id: \"doc\",\n icon: (\n \n ),\n },\n ].map((v) => (\n \n SearchMyFile(v.id + \"/internal\", \"\")\n }\n >\n \n {v.icon}\n \n \n \n ))}\n {tags.map((v) => (\n setTagHover(v.id)}\n onClick={() => {\n if (v.type === 0) {\n SearchMyFile(\"tag/\" + v.id, \"\");\n } else {\n NavigateTo(v.expression);\n }\n }}\n >\n \n {getIcon(\n v.type === 0\n ? v.icon\n : \"FolderHeartOutline\",\n v.type === 0 ? v.color : null\n )}\n \n \n\n {tagHover === v.id && (\n submitDelete(v.id)}\n >\n \n \n \n \n )}\n \n ))}\n\n setAddTagModal(true)}>\n \n \n \n \n \n {\" \"}\n \n \n \n \n );\n}\n","/* eslint-disable */\nclass Crc32 {\n constructor() {\n this.crc = -1;\n }\n\n append(data) {\n let crc = this.crc | 0;\n const table = this.table;\n for (let offset = 0, len = data.length | 0; offset < len; offset++) {\n crc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xff];\n }\n this.crc = crc;\n }\n\n get() {\n return ~this.crc;\n }\n}\nCrc32.prototype.table = (() => {\n let i;\n let j;\n let t;\n const table = [];\n for (i = 0; i < 256; i++) {\n t = i;\n for (j = 0; j < 8; j++) {\n t = t & 1 ? (t >>> 1) ^ 0xedb88320 : t >>> 1;\n }\n table[i] = t;\n }\n return table;\n})();\n\nconst getDataHelper = (byteLength) => {\n const uint8 = new Uint8Array(byteLength);\n return {\n array: uint8,\n view: new DataView(uint8.buffer),\n };\n};\n\nconst pump = (zipObj) =>\n zipObj.reader.read().then((chunk) => {\n if (chunk.done) return zipObj.writeFooter();\n const outputData = chunk.value;\n zipObj.crc.append(outputData);\n zipObj.uncompressedLength += outputData.length;\n zipObj.compressedLength += outputData.length;\n zipObj.ctrl.enqueue(outputData);\n });\n\n/**\n * [createWriter description]\n * @param {Object} underlyingSource [description]\n * @return {Boolean} [description]\n */\nfunction createWriter(underlyingSource) {\n const files = Object.create(null);\n const filenames = [];\n const encoder = new TextEncoder();\n let offset = 0;\n let activeZipIndex = 0;\n let ctrl;\n let activeZipObject, closed;\n\n function next() {\n activeZipIndex++;\n activeZipObject = files[filenames[activeZipIndex]];\n if (activeZipObject) processNextChunk();\n else if (closed) closeZip();\n }\n\n const zipWriter = {\n enqueue(fileLike) {\n if (closed)\n throw new TypeError(\n \"Cannot enqueue a chunk into a readable stream that is closed or has been requested to be closed\"\n );\n\n let name = fileLike.name.trim();\n const date = new Date(\n typeof fileLike.lastModified === \"undefined\"\n ? Date.now()\n : fileLike.lastModified\n );\n\n if (fileLike.directory && !name.endsWith(\"/\")) name += \"/\";\n if (files[name]) throw new Error(\"File already exists.\");\n\n const nameBuf = encoder.encode(name);\n filenames.push(name);\n\n const zipObject = (files[name] = {\n level: 0,\n ctrl,\n directory: !!fileLike.directory,\n nameBuf,\n comment: encoder.encode(fileLike.comment || \"\"),\n compressedLength: 0,\n uncompressedLength: 0,\n writeHeader() {\n const header = getDataHelper(26);\n const data = getDataHelper(30 + nameBuf.length);\n\n zipObject.offset = offset;\n zipObject.header = header;\n if (zipObject.level !== 0 && !zipObject.directory) {\n header.view.setUint16(4, 0x0800);\n }\n header.view.setUint32(0, 0x14000808);\n header.view.setUint16(\n 6,\n (((date.getHours() << 6) | date.getMinutes()) << 5) |\n (date.getSeconds() / 2),\n true\n );\n header.view.setUint16(\n 8,\n ((((date.getFullYear() - 1980) << 4) |\n (date.getMonth() + 1)) <<\n 5) |\n date.getDate(),\n true\n );\n header.view.setUint16(22, nameBuf.length, true);\n data.view.setUint32(0, 0x504b0304);\n data.array.set(header.array, 4);\n data.array.set(nameBuf, 30);\n offset += data.array.length;\n ctrl.enqueue(data.array);\n },\n writeFooter() {\n const footer = getDataHelper(16);\n footer.view.setUint32(0, 0x504b0708);\n\n if (zipObject.crc) {\n zipObject.header.view.setUint32(\n 10,\n zipObject.crc.get(),\n true\n );\n zipObject.header.view.setUint32(\n 14,\n zipObject.compressedLength,\n true\n );\n zipObject.header.view.setUint32(\n 18,\n zipObject.uncompressedLength,\n true\n );\n footer.view.setUint32(4, zipObject.crc.get(), true);\n footer.view.setUint32(\n 8,\n zipObject.compressedLength,\n true\n );\n footer.view.setUint32(\n 12,\n zipObject.uncompressedLength,\n true\n );\n }\n\n ctrl.enqueue(footer.array);\n offset += zipObject.compressedLength + 16;\n next();\n },\n fileLike,\n });\n\n if (!activeZipObject) {\n activeZipObject = zipObject;\n processNextChunk();\n }\n },\n close() {\n if (closed)\n throw new TypeError(\n \"Cannot close a readable stream that has already been requested to be closed\"\n );\n if (!activeZipObject) closeZip();\n closed = true;\n },\n };\n\n function closeZip() {\n let length = 0;\n let index = 0;\n let indexFilename, file;\n for (\n indexFilename = 0;\n indexFilename < filenames.length;\n indexFilename++\n ) {\n file = files[filenames[indexFilename]];\n length += 46 + file.nameBuf.length + file.comment.length;\n }\n const data = getDataHelper(length + 22);\n for (\n indexFilename = 0;\n indexFilename < filenames.length;\n indexFilename++\n ) {\n file = files[filenames[indexFilename]];\n data.view.setUint32(index, 0x504b0102);\n data.view.setUint16(index + 4, 0x1400);\n data.array.set(file.header.array, index + 6);\n data.view.setUint16(index + 32, file.comment.length, true);\n if (file.directory) {\n data.view.setUint8(index + 38, 0x10);\n }\n data.view.setUint32(index + 42, file.offset, true);\n data.array.set(file.nameBuf, index + 46);\n data.array.set(file.comment, index + 46 + file.nameBuf.length);\n index += 46 + file.nameBuf.length + file.comment.length;\n }\n data.view.setUint32(index, 0x504b0506);\n data.view.setUint16(index + 8, filenames.length, true);\n data.view.setUint16(index + 10, filenames.length, true);\n data.view.setUint32(index + 12, length, true);\n data.view.setUint32(index + 16, offset, true);\n ctrl.enqueue(data.array);\n ctrl.close();\n }\n\n function processNextChunk() {\n if (!activeZipObject) return;\n if (activeZipObject.directory)\n return activeZipObject.writeFooter(activeZipObject.writeHeader());\n if (activeZipObject.reader) return pump(activeZipObject);\n if (activeZipObject.fileLike.stream) {\n activeZipObject.crc = new Crc32();\n activeZipObject.reader = activeZipObject.fileLike\n .stream()\n .getReader();\n activeZipObject.writeHeader();\n } else next();\n }\n return new ReadableStream({\n start: (c) => {\n ctrl = c;\n underlyingSource.start &&\n Promise.resolve(underlyingSource.start(zipWriter));\n },\n pull() {\n return (\n processNextChunk() ||\n (underlyingSource.pull &&\n Promise.resolve(underlyingSource.pull(zipWriter)))\n );\n },\n });\n}\n\nwindow.ZIP = createWriter;\n","import { CloudreveFile } from \"../types\";\nimport { list } from \"../services/navigate\";\nimport { pathJoin } from \"../component/Uploader/core/utils\";\n\nexport function getPreviewPath(selected: any): string {\n return encodeURIComponent(\n selected.path === \"/\"\n ? selected.path + selected.name\n : selected.path + \"/\" + selected.name\n );\n}\n\nexport async function walk(\n file: CloudreveFile[],\n share: any\n): Promise {\n let res: CloudreveFile[] = [];\n for (const f of file) {\n if (f.type === \"file\") {\n res.push(f);\n continue;\n }\n\n if (f.type === \"dir\") {\n const response = await list(\n pathJoin([f.path, f.name]),\n share,\n \"\",\n \"\"\n );\n const subs = await walk(response.data.objects, share);\n res = [...res, ...subs];\n }\n }\n\n return res;\n}\n","import { AnyAction } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { CloudreveFile, SortMethod } from \"./../../types/index\";\nimport { closeContextMenu, setPagination } from \"../viewUpdate/action\";\nimport { Policy } from \"../../component/Uploader/core/types\";\nimport streamSaver from \"streamsaver\";\nimport \"../../utils/zip\";\nimport pathHelper from \"../../utils/page\";\nimport { filePath, isMac } from \"../../utils\";\nimport API, { getBaseURL } from \"../../middleware/Api\";\nimport { pathJoin, trimPrefix } from \"../../component/Uploader/core/utils\";\nimport { getPreviewPath, walk } from \"../../utils/api\";\nimport { askForOption, trySharePurchase } from \"./async\";\nimport Auth from \"../../middleware/Auth\";\nimport { encodingRequired, isPreviewable } from \"../../config\";\nimport { push } from \"connected-react-router\";\nimport {\n changeContextMenu,\n closeAllModals,\n openGetSourceDialog,\n openLoadingDialog,\n showAudioPreview,\n showImgPreivew,\n toggleSnackbar,\n} from \"./index\";\nimport { getDownloadURL } from \"../../services/file\";\n\nexport interface ActionSetFileList extends AnyAction {\n type: \"SET_FILE_LIST\";\n list: CloudreveFile[];\n}\nexport const setFileList = (list: CloudreveFile[]): ActionSetFileList => {\n return {\n type: \"SET_FILE_LIST\",\n list,\n };\n};\n\nexport interface ActionSetDirList extends AnyAction {\n type: \"SET_DIR_LIST\";\n list: CloudreveFile[];\n}\nexport const setDirList = (list: CloudreveFile[]): ActionSetDirList => {\n return {\n type: \"SET_DIR_LIST\",\n list,\n };\n};\n\nexport interface ActionSetSortMethod extends AnyAction {\n type: \"SET_SORT_METHOD\";\n method: SortMethod;\n}\nexport const setSortMethod = (method: SortMethod): ActionSetSortMethod => {\n return {\n type: \"SET_SORT_METHOD\",\n method,\n };\n};\n\nexport const setSideBar = (open: boolean) => {\n return {\n type: \"SET_SIDE_BAR\",\n open,\n };\n};\n\nexport const setCurrentPolicy = (policy: Policy) => {\n return {\n type: \"SET_CURRENT_POLICY\",\n policy,\n };\n};\n\nexport const removeSelectedTargets = (fileIds: any) => {\n return {\n type: \"RMOVE_SELECTED_TARGETS\",\n fileIds,\n };\n};\nexport const addSelectedTargets = (targets: any) => {\n return {\n type: \"ADD_SELECTED_TARGETS\",\n targets,\n };\n};\nexport const setSelectedTarget = (targets: any) => {\n return {\n type: \"SET_SELECTED_TARGET\",\n targets,\n };\n};\nexport const setLastSelect = (file: any, index: any) => {\n return {\n type: \"SET_LAST_SELECT\",\n file,\n index,\n };\n};\nexport const setShiftSelectedIds = (shiftSelectedIds: any) => {\n return {\n type: \"SET_SHIFT_SELECTED_IDS\",\n shiftSelectedIds,\n };\n};\n\ntype SortFunc = (a: CloudreveFile, b: CloudreveFile) => number;\nconst sortMethodFuncs: Record = {\n sizePos: (a: CloudreveFile, b: CloudreveFile) => {\n return a.size - b.size;\n },\n sizeRes: (a: CloudreveFile, b: CloudreveFile) => {\n return b.size - a.size;\n },\n namePos: (a: CloudreveFile, b: CloudreveFile) => {\n return a.name.localeCompare(\n b.name,\n navigator.languages[0] || navigator.language,\n { numeric: true, ignorePunctuation: true }\n );\n },\n nameRev: (a: CloudreveFile, b: CloudreveFile) => {\n return b.name.localeCompare(\n a.name,\n navigator.languages[0] || navigator.language,\n { numeric: true, ignorePunctuation: true }\n );\n },\n timePos: (a: CloudreveFile, b: CloudreveFile) => {\n return Date.parse(a.create_date) - Date.parse(b.create_date);\n },\n timeRev: (a: CloudreveFile, b: CloudreveFile) => {\n return Date.parse(b.create_date) - Date.parse(a.create_date);\n },\n modifyTimePos: (a: CloudreveFile, b: CloudreveFile) => {\n return Date.parse(a.date) - Date.parse(b.date);\n },\n modifyTimeRev: (a: CloudreveFile, b: CloudreveFile) => {\n return Date.parse(b.date) - Date.parse(a.date);\n },\n};\n\nexport const selectAll = (): ThunkAction => {\n return (dispatch, getState): void => {\n const state = getState();\n const { selected, fileList, dirList } = state.explorer;\n if (selected.length >= dirList.length + fileList.length) {\n dispatch(setSelectedTarget([]));\n } else {\n dispatch(setSelectedTarget([...dirList, ...fileList]));\n }\n };\n};\n\nexport const updateFileList = (\n list: CloudreveFile[]\n): ThunkAction => {\n return (dispatch, getState): void => {\n const state = getState();\n // TODO: define state type\n const { sortMethod, pagination } = state.viewUpdate;\n const dirList = list.filter((x) => {\n return x.type === \"dir\";\n });\n const fileList = list.filter((x) => {\n return x.type === \"file\";\n });\n const sortFunc = sortMethodFuncs[sortMethod as SortMethod];\n dispatch(setDirList(dirList.sort(sortFunc)));\n dispatch(setFileList(fileList.sort(sortFunc)));\n const total = dirList.length + fileList.length;\n if (pagination.page * pagination.size > total) {\n dispatch(\n setPagination({\n ...pagination,\n page: Math.max(Math.ceil(total / pagination.size), 1),\n })\n );\n }\n };\n};\n\nexport const changeSortMethod = (\n method: SortMethod\n): ThunkAction => {\n return (dispatch, getState): void => {\n const state = getState();\n const { fileList, dirList } = state.explorer;\n const sortFunc = sortMethodFuncs[method];\n Auth.SetPreference(\"sort\", method);\n dispatch(setSortMethod(method));\n dispatch(setDirList(dirList.slice().sort(sortFunc)));\n dispatch(setFileList(fileList.slice().sort(sortFunc)));\n };\n};\n\nexport const toggleObjectInfoSidebar = (\n open: boolean\n): ThunkAction => {\n return (dispatch, getState): void => {\n const state = getState();\n if (open) {\n dispatch(closeContextMenu());\n }\n dispatch(setSideBar(true));\n };\n};\n\nexport const serverSideBatchDownload = (\n share: any\n): ThunkAction => {\n return (dispatch, getState): void => {\n dispatch(openLoadingDialog(\"正在准备打包下载...\"));\n const {\n explorer: { selected },\n router: {\n location: { pathname },\n },\n } = getState();\n const dirs: any[] = [],\n items: any[] = [];\n selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n return null;\n });\n\n let reqURL = \"/file/archive\";\n const postBody = {\n items: items,\n dirs: dirs,\n };\n if (pathHelper.isSharePage(pathname)) {\n reqURL = \"/share/archive/\" + share.key;\n postBody[\"path\"] = selected[0].path;\n }\n\n API.post(reqURL, postBody)\n .then((response: any) => {\n if (response.rawData.code === 0) {\n dispatch(closeAllModals());\n window.location.assign(response.data);\n } else {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n response.rawData.msg,\n \"warning\"\n )\n );\n }\n dispatch(closeAllModals());\n })\n .catch((error) => {\n dispatch(\n toggleSnackbar(\"top\", \"right\", error.message, \"error\")\n );\n dispatch(closeAllModals());\n });\n };\n};\n\nexport const startDownload = (\n share: any,\n file: CloudreveFile\n): ThunkAction => {\n return async (dispatch, getState): Promise => {\n const {\n router: {\n location: { pathname },\n },\n } = getState();\n const user = Auth.GetUser();\n if (\n pathHelper.isSharePage(pathname) &&\n !Auth.Check() &&\n user &&\n !user.group.shareDownload\n ) {\n dispatch(toggleSnackbar(\"top\", \"right\", \"请先登录\", \"warning\"));\n return;\n }\n\n dispatch(changeContextMenu(\"file\", false));\n\n try {\n await dispatch(trySharePurchase(share));\n } catch (e) {\n return;\n }\n\n dispatch(openLoadingDialog(\"获取下载地址...\"));\n try {\n const res = await getDownloadURL(file ? file : share);\n window.location.assign(res.data);\n dispatch(closeAllModals());\n } catch (e) {\n dispatch(toggleSnackbar(\"top\", \"right\", e.message, \"warning\"));\n dispatch(closeAllModals());\n }\n };\n};\n\nexport const startBatchDownload = (\n share: any\n): ThunkAction => {\n return async (dispatch, getState): Promise => {\n dispatch(changeContextMenu(\"file\", false));\n try {\n await dispatch(trySharePurchase(share));\n } catch (e) {\n return;\n }\n\n const user = Auth.GetUser();\n if (user.group.allowArchiveDownload) {\n let option: any;\n try {\n option = await dispatch(\n askForOption(\n [\n {\n key: \"client\",\n name: \"浏览器端打包\",\n description:\n \"由浏览器实时下载并打包,并非所有环境都支持。\",\n },\n {\n key: \"server\",\n name: \"服务端中转打包\",\n description:\n \"由服务端中转打包并实时发送到客户端下载。\",\n },\n ],\n \"选择打包下载方式\"\n )\n );\n } catch (e) {\n return;\n }\n\n if (option.key === \"server\") {\n dispatch(serverSideBatchDownload(share));\n return;\n }\n }\n\n const {\n explorer: { selected },\n } = getState();\n\n dispatch(openLoadingDialog(\"列取文件中...\"));\n\n let queue: CloudreveFile[] = [];\n try {\n queue = await walk(selected, share);\n } catch (e) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n `列取文件时出错:${e.message}`,\n \"warning\"\n )\n );\n dispatch(closeAllModals());\n return;\n }\n\n dispatch(closeAllModals());\n dispatch(\n toggleSnackbar(\n \"top\",\n \"center\",\n `打包下载已开始,请不要关闭此标签页`,\n \"info\"\n )\n );\n const fileStream = streamSaver.createWriteStream(\"archive.zip\");\n let failed = 0;\n const readableZipStream = new (window as any).ZIP({\n start(ctrl: any) {\n // ctrl.close()\n },\n async pull(ctrl: any) {\n while (queue.length > 0) {\n const next = queue.pop();\n if (next && next.type === \"file\") {\n const previewPath = getPreviewPath(next);\n const url =\n getBaseURL() +\n (pathHelper.isSharePage(location.pathname)\n ? \"/share/preview/\" +\n share.key +\n (previewPath !== \"\"\n ? \"?path=\" + previewPath\n : \"\")\n : \"/file/preview/\" + next.id);\n try {\n const res = await fetch(url, { cache: \"no-cache\" });\n const stream = () => res.body;\n const name = trimPrefix(\n pathJoin([next.path, next.name]),\n \"/\"\n );\n ctrl.enqueue({ name, stream });\n return;\n } catch (e) {\n failed++;\n }\n }\n }\n ctrl.close();\n },\n });\n\n // more optimized\n if (window.WritableStream && readableZipStream.pipeTo) {\n return readableZipStream\n .pipeTo(fileStream)\n .then(() => dispatch(closeAllModals()))\n .catch((e) => {\n console.log(e);\n toggleSnackbar(\n \"top\",\n \"right\",\n `打包遇到错误:${e && e.message}`,\n \"warning\"\n );\n dispatch(closeAllModals());\n });\n }\n };\n};\n\nexport const getViewerURL = (\n viewer: string,\n file: any,\n isShare: boolean | \"\"\n): string => {\n const previewPath = getPreviewPath(file);\n if (isShare) {\n return (\n \"/s/\" +\n file.key +\n `/${viewer}?name=` +\n encodeURIComponent(file.name) +\n \"&share_path=\" +\n previewPath\n );\n }\n\n return `/${viewer}?p=` + previewPath + \"&id=\" + file.id;\n};\n\nexport const openViewer = (\n viewer: string,\n file: any,\n isShare: boolean | \"\"\n) => {\n return (dispatch: any, getState: any) => {\n dispatch(push(getViewerURL(viewer, file, isShare)));\n };\n};\n\nexport const openPreview = (share: any) => {\n return (dispatch: any, getState: any) => {\n const {\n explorer: { selected },\n router: {\n location: { pathname },\n },\n } = getState();\n const isShare = pathHelper.isSharePage(pathname);\n if (isShare) {\n const user = Auth.GetUser();\n if (!Auth.Check() && user && !user.group.shareDownload) {\n dispatch(toggleSnackbar(\"top\", \"right\", \"请先登录\", \"warning\"));\n dispatch(changeContextMenu(\"file\", false));\n return;\n }\n }\n\n dispatch(changeContextMenu(\"file\", false));\n switch (isPreviewable(selected[0].name)) {\n case \"img\":\n dispatch(showImgPreivew(selected[0]));\n return;\n case \"msDoc\":\n dispatch(openViewer(\"doc\", selected[0], isShare));\n return;\n case \"audio\":\n dispatch(showAudioPreview(selected[0]));\n return;\n case \"video\":\n dispatch(openViewer(\"video\", selected[0], isShare));\n return;\n case \"pdf\":\n dispatch(openViewer(\"pdf\", selected[0], isShare));\n return;\n case \"edit\":\n dispatch(openViewer(\"text\", selected[0], isShare));\n return;\n case \"code\":\n dispatch(openViewer(\"code\", selected[0], isShare));\n return;\n case \"epub\":\n dispatch(openViewer(\"epub\", selected[0], isShare));\n return;\n default:\n dispatch(startDownload(share, selected[0]));\n return;\n }\n };\n};\nexport const selectFile = (file: any, event: any, fileIndex: any) => {\n const { ctrlKey, metaKey, shiftKey } = event;\n return (dispatch: any, getState: any) => {\n // 多种组合操作忽略\n if (\n [ctrlKey, shiftKey].filter(Boolean).length > 1 ||\n [metaKey, shiftKey].filter(Boolean).length > 1\n ) {\n return;\n }\n const isMacbook = isMac();\n const { explorer } = getState();\n const {\n selected,\n lastSelect,\n dirList,\n fileList,\n shiftSelectedIds,\n } = explorer;\n if (shiftKey && !ctrlKey && !metaKey && selected.length !== 0) {\n // shift 多选\n // 取消原有选择\n dispatch(removeSelectedTargets(selected.map((v: any) => v.id)));\n const all = [...dirList, ...fileList];\n // 添加新选择\n const begin = Math.min(lastSelect.index, fileIndex);\n const end = Math.max(lastSelect.index, fileIndex);\n const list = file.type === \"dir\" ? dirList : fileList;\n const newShiftSelected = all.slice(begin, end + 1);\n return dispatch(addSelectedTargets(newShiftSelected));\n }\n dispatch(setLastSelect(file, fileIndex));\n dispatch(setShiftSelectedIds([]));\n if ((ctrlKey && !isMacbook) || (metaKey && isMacbook)) {\n // Ctrl/Command 单击添加/删除\n const presentIndex = selected.findIndex((value: any) => {\n return value.id === file.id;\n });\n if (presentIndex !== -1) {\n return dispatch(removeSelectedTargets([file.id]));\n }\n return dispatch(addSelectedTargets([file]));\n }\n // 单选\n return dispatch(setSelectedTarget([file]));\n };\n};\n\nexport const submitCompressTask = (fileName: string, path: string) => {\n return async (dispatch: any, getState: any) => {\n const {\n explorer: { selected },\n } = getState();\n const dirs: string[] = [],\n items: string[] = [];\n // eslint-disable-next-line\n selected.map((value) => {\n if (value.type === \"dir\") {\n dirs.push(value.id);\n } else {\n items.push(value.id);\n }\n });\n\n return await API.post(\"/file/compress\", {\n src: {\n dirs: dirs,\n items: items,\n },\n name: fileName,\n dst: path === \"//\" ? \"/\" : path,\n });\n };\n};\n\nconst encodings = [\n \"ibm866\",\n \"iso8859_2\",\n \"iso8859_3\",\n \"iso8859_4\",\n \"iso8859_5\",\n \"iso8859_6\",\n \"iso8859_7\",\n \"iso8859_8\",\n \"iso8859_8I\",\n \"iso8859_10\",\n \"iso8859_13\",\n \"iso8859_14\",\n \"iso8859_15\",\n \"iso8859_16\",\n \"koi8r\",\n \"koi8u\",\n \"macintosh\",\n \"windows874\",\n \"windows1250\",\n \"windows1251\",\n \"windows1252\",\n \"windows1253\",\n \"windows1254\",\n \"windows1255\",\n \"windows1256\",\n \"windows1257\",\n \"windows1258\",\n \"macintoshcyrillic\",\n \"gbk\",\n \"big5\",\n \"eucjp\",\n \"iso2022jp\",\n \"shiftjis\",\n \"euckr\",\n \"utf16be\",\n \"utf16le\",\n];\n\nexport const submitDecompressTask = (path: string) => {\n return async (dispatch: any, getState: any) => {\n const {\n explorer: { selected },\n } = getState();\n\n let encoding = \"\";\n if (selected.length > 0 && encodingRequired(selected[0].name)) {\n let option: any;\n try {\n const allOptions = encodings.map((e) => {\n return {\n key: e,\n name: e.toUpperCase(),\n };\n });\n option = await dispatch(\n askForOption(\n [\n {\n key: \"\",\n name: \"缺省\",\n },\n {\n key: \"gb18030\",\n name: \"GB18030\",\n description: \"中文常见编码\",\n },\n ...allOptions,\n ],\n \"选择 ZIP 文件特殊字符编码\"\n )\n );\n } catch (e) {\n throw new Error(\"未选择编码方式\");\n }\n\n encoding = option.key;\n }\n\n return await API.post(\"/file/decompress\", {\n src: filePath(selected[0]),\n dst: path === \"//\" ? \"/\" : path,\n encoding: encoding,\n });\n };\n};\n\nexport const batchGetSource = (): ThunkAction => {\n return async (dispatch, getState): Promise => {\n const {\n explorer: { selected },\n router: {\n location: { pathname },\n },\n } = getState();\n\n if (selected.findIndex((f) => f.type === \"dir\") >= 0) {\n dispatch(openLoadingDialog(\"列取文件中...\"));\n }\n\n let queue: CloudreveFile[] = [];\n try {\n queue = await walk(selected, null);\n } catch (e) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n `列取文件时出错:${e.message}`,\n \"warning\"\n )\n );\n dispatch(closeAllModals());\n return;\n }\n\n dispatch(openLoadingDialog(\"生成外链中...\"));\n\n const items = queue\n .filter((value) => value.source_enabled && value.type === \"file\")\n .map((v) => v.id);\n\n if (items.length === 0) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n `没有可以生成外链的文件`,\n \"warning\"\n )\n );\n dispatch(closeAllModals());\n return;\n }\n\n const user = Auth.GetUser();\n if (items.length > user.group.sourceBatch) {\n dispatch(\n toggleSnackbar(\n \"top\",\n \"right\",\n `当前用户组最大可同时为 ${user.group.sourceBatch} 个文件生成外链`,\n \"warning\"\n )\n );\n dispatch(closeAllModals());\n return;\n }\n\n API.post(\"/file/source\", { items: items })\n .then((response) => {\n console.log(response);\n dispatch(closeAllModals());\n dispatch(\n openGetSourceDialog(\n response.data.length == 1\n ? response.data[0].url\n : response.data\n .map(\n (res) =>\n `${res.name}: ${res.url}${\n res.error ? res.error : \"\"\n }`\n )\n .join(\"\\n\")\n )\n );\n })\n .catch((error) => {\n dispatch(\n toggleSnackbar(\"top\", \"right\", error.message, \"warning\")\n );\n dispatch(closeAllModals());\n });\n };\n};\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { baseURL } from \"../../middleware/Api\";\nimport { imgPreviewSuffix } from \"../../config\";\nimport { withStyles } from \"@material-ui/core\";\nimport pathHelper from \"../../utils/page\";\nimport { withRouter } from \"react-router\";\nimport { PhotoSlider } from \"react-photo-view\";\nimport \"react-photo-view/dist/index.css\";\nimport * as explorer from \"../../redux/explorer/reducer\";\nimport { showImgPreivew } from \"../../redux/explorer\";\n\nconst styles = () => ({});\n\nconst mapStateToProps = (state) => {\n return {\n first: state.explorer.imgPreview.first,\n other: state.explorer.imgPreview.other,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n };\n};\n\nclass ImagPreviewComponent extends Component {\n state = {\n items: [],\n photoIndex: 0,\n isOpen: false,\n };\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n const items = [];\n let firstOne = 0;\n if (nextProps.first.id !== \"\") {\n if (\n pathHelper.isSharePage(this.props.location.pathname) &&\n !nextProps.first.path\n ) {\n const newImg = {\n intro: nextProps.first.name,\n src: baseURL + \"/share/preview/\" + nextProps.first.key,\n };\n firstOne = 0;\n items.push(newImg);\n this.setState({\n photoIndex: firstOne,\n items: items,\n isOpen: true,\n });\n return;\n }\n // eslint-disable-next-line\n nextProps.other.map((value) => {\n const fileType = value.name.split(\".\").pop().toLowerCase();\n if (imgPreviewSuffix.indexOf(fileType) !== -1) {\n let src = \"\";\n if (pathHelper.isSharePage(this.props.location.pathname)) {\n src = baseURL + \"/share/preview/\" + value.key;\n src =\n src +\n \"?path=\" +\n encodeURIComponent(\n value.path === \"/\"\n ? value.path + value.name\n : value.path + \"/\" + value.name\n );\n } else {\n src = baseURL + \"/file/preview/\" + value.id;\n }\n const newImg = {\n intro: value.name,\n src: src,\n };\n if (\n value.path === nextProps.first.path &&\n value.name === nextProps.first.name\n ) {\n firstOne = items.length;\n }\n items.push(newImg);\n }\n });\n this.setState({\n photoIndex: firstOne,\n items: items,\n isOpen: true,\n });\n }\n };\n\n handleClose = () => {\n this.props.showImgPreivew(explorer.initState.imgPreview.first);\n this.setState({\n isOpen: false,\n });\n };\n\n render() {\n const { photoIndex, isOpen, items } = this.state;\n\n return (\n
\n {isOpen && (\n this.handleClose()}\n index={photoIndex}\n onIndexChange={(n) =>\n this.setState({\n photoIndex: n,\n })\n }\n />\n )}\n
\n );\n }\n}\n\nImagPreviewComponent.propTypes = {\n classes: PropTypes.object.isRequired,\n};\n\nconst ImgPreivew = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(ImagPreviewComponent)));\n\nexport default ImgPreivew;\n","export const imgPreviewSuffix = [\n \"bmp\",\n \"png\",\n \"gif\",\n \"jpg\",\n \"jpeg\",\n \"svg\",\n \"webp\",\n];\nexport const msDocPreviewSuffix = [\n \"ppt\",\n \"pptx\",\n \"pps\",\n \"doc\",\n \"docx\",\n \"xlsx\",\n \"xls\",\n];\nexport const subtitleSuffix = [\"ass\", \"srt\", \"vrr\"];\nexport const audioPreviewSuffix = [\"mp3\", \"ogg\", \"wav\", \"flac\",\"m4a\"];\nexport const videoPreviewSuffix = [\"mp4\", \"mkv\", \"webm\", \"avi\", \"m3u8\", \"mov\"];\nexport const pdfPreviewSuffix = [\"pdf\"];\nexport const editSuffix = [\"md\", \"txt\"];\nexport const epubSuffix = [\"epub\"];\nexport const codePreviewSuffix = {\n json: \"json\",\n php: \"php\",\n py: \"python\",\n bat: \"bat\",\n cpp: \"cpp\",\n c: \"cpp\",\n h: \"cpp\",\n cs: \"csharp\",\n css: \"css\",\n dockerfile: \"dockerfile\",\n go: \"go\",\n html: \"html\",\n ini: \"ini\",\n java: \"java\",\n js: \"javascript\",\n jsx: \"javascript\",\n less: \"less\",\n lua: \"lua\",\n sh: \"shell\",\n sql: \"sql\",\n xml: \"xml\",\n yaml: \"yaml\",\n};\nexport const mediaType = {\n audio: [\"mp3\", \"flac\", \"ape\", \"wav\", \"acc\", \"ogg\", \"m4a\"],\n video: [\"mp4\", \"flv\", \"avi\", \"wmv\", \"mkv\", \"rm\", \"rmvb\", \"mov\", \"ogv\"],\n image: [\"bmp\", \"iff\", \"png\", \"gif\", \"jpg\", \"jpeg\", \"psd\", \"svg\", \"webp\"],\n pdf: [\"pdf\"],\n word: [\"doc\", \"docx\"],\n ppt: [\"ppt\", \"pptx\"],\n excel: [\"xls\", \"xlsx\", \"csv\"],\n text: [\"txt\", \"md\", \"html\"],\n torrent: [\"torrent\"],\n zip: [\"zip\", \"gz\", \"xz\", \"tar\", \"rar\", \"7z\"],\n excute: [\"exe\"],\n android: [\"apk\"],\n php: [\"php\"],\n go: [\"go\"],\n python: [\"py\"],\n cpp: [\"cpp\"],\n c: [\"c\"],\n js: [\"js\", \"jsx\"],\n epub: epubSuffix,\n};\nexport const policyTypeMap = {\n local: \"本机\",\n remote: \"从机\",\n qiniu: \"七牛\",\n upyun: \"又拍云\",\n oss: \"阿里云 OSS\",\n cos: \"腾讯云\",\n onedrive: \"OneDrive\",\n s3: \"Amazon S3\",\n};\nexport const isPreviewable = (name: any) => {\n const suffix = name.split(\".\").pop().toLowerCase();\n if (imgPreviewSuffix.indexOf(suffix) !== -1) {\n return \"img\";\n } else if (msDocPreviewSuffix.indexOf(suffix) !== -1) {\n return \"msDoc\";\n } else if (audioPreviewSuffix.indexOf(suffix) !== -1) {\n return \"audio\";\n } else if (videoPreviewSuffix.indexOf(suffix) !== -1) {\n return \"video\";\n } else if (editSuffix.indexOf(suffix) !== -1) {\n return \"edit\";\n } else if (pdfPreviewSuffix.indexOf(suffix) !== -1) {\n return \"pdf\";\n } else if (Object.keys(codePreviewSuffix).indexOf(suffix) !== -1) {\n return \"code\";\n } else if (epubSuffix.indexOf(suffix) !== -1) {\n return \"epub\";\n }\n return false;\n};\nexport const isTorrent = (name: any) => {\n const suffix = name.split(\".\").pop().toLowerCase();\n if (mediaType.torrent.indexOf(suffix) !== -1) {\n return true;\n }\n return false;\n};\n\nexport const isCompressFile = (name: any) => {\n const suffix = name.split(\".\").pop().toLowerCase();\n return suffix !== \"7z\" && mediaType[\"zip\"].indexOf(suffix) !== -1;\n};\n\nexport const encodingRequired = (name: any) => {\n const suffix = name.split(\".\").pop().toLowerCase();\n return suffix === \"zip\";\n};\n\nconst taskStatus = [\"排队中\", \"处理中\", \"失败\", \"取消\", \"已完成\"];\nconst taskType = [\"压缩\", \"解压缩\", \"文件中转\", \"导入外部目录\", \"存储策略转移\"];\nconst taskProgress = [\n \"等待中\",\n \"压缩中\",\n \"解压缩中\",\n \"下载中\",\n \"转存中\",\n \"索引中\",\n \"插入中\",\n];\n\nexport const getTaskStatus = (status: any) => {\n return taskStatus[status];\n};\n\nexport const getTaskType = (status: any) => {\n return taskType[status];\n};\n\nexport const getTaskProgress = (type: any, status: any) => {\n if (type === 2) {\n return \"已完成 \" + (status + 1) + \" 个文件\";\n }\n return taskProgress[status];\n};\n\nexport const reportReasons = [\n \"色情信息\",\n \"包含病毒\",\n \"侵权\",\n \"不恰当的言论\",\n \"其他\",\n];\n","import { ChunkProgress } from \"./uploader/chunk\";\n\nexport enum PolicyType {\n local = \"local\",\n remote = \"remote\",\n oss = \"oss\",\n qiniu = \"qiniu\",\n onedrive = \"onedrive\",\n cos = \"cos\",\n upyun = \"upyun\",\n s3 = \"s3\",\n}\n\nexport interface Policy {\n id: number;\n name: string;\n allowedSuffix: Nullable;\n maxSize: number;\n type: PolicyType;\n}\n\nexport enum TaskType {\n file,\n resumeHint,\n}\n\nexport interface Task {\n type: TaskType;\n name: string;\n size: number;\n policy: Policy;\n dst: string;\n file: File;\n child?: Task[];\n session?: UploadCredential;\n chunkProgress: ChunkProgress[];\n resumed: boolean;\n}\n\ntype Nullable = T | null;\n\nexport interface Response {\n code: number;\n data: T;\n msg: string;\n error: string;\n}\n\nexport interface UploadSessionRequest {\n path: string;\n size: number;\n name: string;\n policy_id: number;\n last_modified?: number;\n}\n\nexport interface UploadCredential {\n sessionID: string;\n expires: number;\n chunkSize: number;\n uploadURLs: string[];\n credential: string;\n uploadID: string;\n callback: string;\n policy: string;\n ak: string;\n keyTime: string;\n path: string;\n completeURL: string;\n}\n\nexport interface OneDriveError {\n error: {\n code: string;\n message: string;\n innererror?: {\n code: string;\n };\n };\n}\n\nexport interface OneDriveChunkResponse {\n expirationDateTime: string;\n nextExpectedRanges: string[];\n}\n\nexport interface QiniuChunkResponse {\n etag: string;\n md5: string;\n}\n\nexport interface QiniuError {\n error: string;\n}\n\nexport interface QiniuPartsInfo {\n etag: string;\n partNumber: number;\n}\n\nexport interface QiniuFinishUploadRequest {\n parts: QiniuPartsInfo[];\n}\n\nexport interface UpyunError {\n message: string;\n code: number;\n}\n\nexport interface S3Part {\n ETag: string;\n PartNumber: number;\n}\n","// 所有 Uploader 的基类\nimport { PolicyType, Task } from \"../types\";\nimport UploadManager from \"../index\";\nimport Logger from \"../logger\";\nimport { validate } from \"../utils/validator\";\nimport { CancelToken } from \"../utils/request\";\nimport axios, { CancelTokenSource } from \"axios\";\nimport { createUploadSession, deleteUploadSession } from \"../api\";\nimport * as utils from \"../utils\";\nimport { RequestCanceledError, UploaderError } from \"../errors\";\n\nexport enum Status {\n added,\n resumable,\n initialized,\n queued,\n preparing,\n processing,\n finishing,\n finished,\n error,\n canceled,\n}\n\nexport interface UploadHandlers {\n onTransition: (newStatus: Status) => void;\n onError: (err: Error) => void;\n onProgress: (data: UploadProgress) => void;\n onMsg: (msg: string, color: string) => void;\n}\n\nexport interface UploadProgress {\n total: ProgressCompose;\n chunks?: ProgressCompose[];\n}\n\nexport interface ProgressCompose {\n size: number;\n loaded: number;\n percent: number;\n fromCache?: boolean;\n}\n\nexport interface Progress {\n total: number;\n loaded: number;\n}\n\nconst resumePolicy = [\n PolicyType.local,\n PolicyType.remote,\n PolicyType.qiniu,\n PolicyType.oss,\n PolicyType.onedrive,\n PolicyType.s3,\n];\nconst deleteUploadSessionDelay = 500;\n\nexport default abstract class Base {\n public child?: Base[];\n public status: Status = Status.added;\n public error?: Error;\n\n public id = ++Base.id;\n private static id = 0;\n\n protected logger: Logger;\n protected subscriber: UploadHandlers;\n // 用于取消请求\n protected cancelToken: CancelTokenSource = CancelToken.source();\n protected progress: UploadProgress;\n\n public lastTime = Date.now();\n public startTime = Date.now();\n\n constructor(public task: Task, protected manager: UploadManager) {\n this.logger = new Logger(\n this.manager.logger.level,\n \"UPLOADER\",\n this.id\n );\n this.logger.info(\"Initialize new uploader for task: \", task);\n this.subscriber = {\n /* eslint-disable @typescript-eslint/no-empty-function */\n onTransition: (newStatus: Status) => {},\n onError: (err: Error) => {},\n onProgress: (data: UploadProgress) => {},\n onMsg: (msg, color: string) => {},\n /* eslint-enable @typescript-eslint/no-empty-function */\n };\n }\n\n public subscribe = (handlers: UploadHandlers) => {\n this.subscriber = handlers;\n };\n\n public start = async () => {\n this.logger.info(\"Activate uploading task\");\n this.transit(Status.initialized);\n this.lastTime = this.startTime = Date.now();\n\n try {\n validate(this.task.file, this.task.policy);\n } catch (e) {\n this.logger.error(\"File validate failed with error:\", e);\n this.setError(e);\n return;\n }\n\n this.logger.info(\"Enqueued in manager pool\");\n this.transit(Status.queued);\n this.manager.pool.enqueue(this).catch((e) => {\n this.logger.info(\"Upload task failed with error:\", e);\n this.setError(e);\n });\n };\n\n public run = async () => {\n this.logger.info(\"Start upload task, create upload session...\");\n this.transit(Status.preparing);\n const cachedInfo = utils.getResumeCtx(this.task, this.logger);\n if (cachedInfo == null) {\n this.task.session = await createUploadSession(\n {\n path: this.task.dst,\n size: this.task.file.size,\n name: this.task.file.name,\n policy_id: this.task.policy.id,\n last_modified: this.task.file.lastModified,\n },\n this.cancelToken.token\n );\n this.logger.info(\"Upload session created:\", this.task.session);\n } else {\n this.task.session = cachedInfo.session;\n this.task.resumed = true;\n this.task.chunkProgress = cachedInfo.chunkProgress;\n this.logger.info(\"Resume upload from cached ctx:\", cachedInfo);\n }\n\n this.transit(Status.processing);\n await this.upload();\n await this.afterUpload();\n utils.removeResumeCtx(this.task, this.logger);\n this.transit(Status.finished);\n this.logger.info(\"Upload task completed\");\n };\n\n public abstract async upload(): Promise;\n protected async afterUpload(): Promise {\n return;\n }\n\n public cancel = async () => {\n if (this.status === Status.finished) {\n return;\n }\n\n this.cancelToken.cancel();\n await this.cancelUploadSession();\n this.transit(Status.canceled);\n };\n\n public reset = () => {\n this.cancelToken = axios.CancelToken.source();\n this.progress = {\n total: {\n size: 0,\n loaded: 0,\n percent: 0,\n },\n };\n };\n\n protected setError(e: Error) {\n if (\n !(e instanceof UploaderError && e.Retryable()) ||\n !resumePolicy.includes(this.task.policy.type)\n ) {\n this.logger.warn(\"Non-resume error occurs, clean resume ctx cache\");\n this.cancelUploadSession();\n }\n\n if (!(e instanceof RequestCanceledError)) {\n this.status = Status.error;\n this.error = e;\n this.subscriber.onError(e);\n }\n }\n\n protected cancelUploadSession = (): Promise => {\n return new Promise((resolve) => {\n utils.removeResumeCtx(this.task, this.logger);\n if (this.task.session) {\n setTimeout(() => {\n deleteUploadSession(this.task.session!?.sessionID)\n .catch((e) => {\n this.logger.warn(\n \"Failed to cancel upload session: \",\n e\n );\n })\n .finally(() => {\n resolve();\n });\n }, deleteUploadSessionDelay);\n } else {\n resolve();\n }\n });\n };\n\n protected transit(status: Status) {\n this.status = status;\n this.subscriber.onTransition(status);\n }\n\n public getProgressInfoItem(\n loaded: number,\n size: number,\n fromCache?: boolean\n ): ProgressCompose {\n return {\n size,\n loaded,\n percent: (loaded / size) * 100,\n ...(fromCache == null ? {} : { fromCache }),\n };\n }\n\n public key(): string {\n return utils.getResumeCtxKey(this.task);\n }\n}\n","export type LogLevel = \"INFO\" | \"WARN\" | \"ERROR\" | \"OFF\";\n\nexport default class Logger {\n constructor(\n public level: LogLevel = \"OFF\",\n private prefix = \"UPLOAD\",\n private id: number = 1\n ) {}\n\n private getPrintPrefix(level: LogLevel) {\n return `Cloudreve-Uploader [${level}][${this.prefix}#${this.id}]:`;\n }\n\n info(...args: unknown[]) {\n const allowLevel: LogLevel[] = [\"INFO\"];\n if (allowLevel.includes(this.level)) {\n // eslint-disable-next-line no-console\n console.log(this.getPrintPrefix(\"INFO\"), ...args);\n }\n }\n\n warn(...args: unknown[]) {\n const allowLevel: LogLevel[] = [\"INFO\", \"WARN\"];\n if (allowLevel.includes(this.level)) {\n // eslint-disable-next-line no-console\n console.warn(this.getPrintPrefix(\"WARN\"), ...args);\n }\n }\n\n error(...args: unknown[]) {\n const allowLevel: LogLevel[] = [\"INFO\", \"WARN\", \"ERROR\"];\n if (allowLevel.includes(this.level)) {\n // eslint-disable-next-line no-console\n console.error(this.getPrintPrefix(\"ERROR\"), ...args);\n }\n }\n}\n","import {\n OneDriveChunkResponse,\n QiniuChunkResponse,\n QiniuFinishUploadRequest,\n QiniuPartsInfo,\n S3Part,\n UploadCredential,\n UploadSessionRequest,\n} from \"../types\";\nimport { OBJtoXML, request, requestAPI } from \"../utils\";\nimport {\n COSUploadCallbackError,\n COSUploadError,\n CreateUploadSessionError,\n DeleteUploadSessionError,\n HTTPError,\n LocalChunkUploadError,\n OneDriveChunkError,\n OneDriveFinishUploadError,\n QiniuChunkError,\n QiniuFinishUploadError,\n S3LikeChunkError,\n S3LikeFinishUploadError,\n S3LikeUploadCallbackError,\n SlaveChunkUploadError,\n UpyunUploadError,\n} from \"../errors\";\nimport { ChunkInfo, ChunkProgress } from \"../uploader/chunk\";\nimport { Progress } from \"../uploader/base\";\nimport { CancelToken } from \"axios\";\n\nexport async function createUploadSession(\n req: UploadSessionRequest,\n cancel: CancelToken\n): Promise {\n const res = await requestAPI(\"file/upload\", {\n method: \"put\",\n data: req,\n cancelToken: cancel,\n });\n\n if (res.data.code != 0) {\n throw new CreateUploadSessionError(res.data);\n }\n\n return res.data.data;\n}\n\nexport async function deleteUploadSession(id: string): Promise {\n const res = await requestAPI(`file/upload/${id}`, {\n method: \"delete\",\n });\n\n if (res.data.code != 0) {\n throw new DeleteUploadSessionError(res.data);\n }\n\n return res.data.data;\n}\n\nexport async function localUploadChunk(\n sessionID: string,\n chunk: ChunkInfo,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const res = await requestAPI(\n `file/upload/${sessionID}/${chunk.index}`,\n {\n method: \"post\",\n headers: { \"content-type\": \"application/octet-stream\" },\n data: chunk.chunk,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n }\n );\n\n if (res.data.code != 0) {\n throw new LocalChunkUploadError(res.data, chunk.index);\n }\n\n return res.data.data;\n}\n\nexport async function slaveUploadChunk(\n url: string,\n credential: string,\n chunk: ChunkInfo,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const res = await request(`${url}?chunk=${chunk.index}`, {\n method: \"post\",\n headers: {\n \"content-type\": \"application/octet-stream\",\n Authorization: credential,\n },\n data: chunk.chunk,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n });\n\n if (res.data.code != 0) {\n throw new SlaveChunkUploadError(res.data, chunk.index);\n }\n\n return res.data.data;\n}\n\nexport async function oneDriveUploadChunk(\n url: string,\n range: string, // if range is empty, this will be an request to query the session status\n chunk: ChunkInfo,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const res = await request(url, {\n method: range === \"\" ? \"get\" : \"put\",\n headers: {\n \"content-type\": \"application/octet-stream\",\n ...(range !== \"\" && { \"content-range\": range }),\n },\n data: chunk.chunk,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new OneDriveChunkError(e.response.data);\n }\n\n throw e;\n });\n\n return res.data;\n}\n\nexport async function finishOneDriveUpload(\n sessionID: string,\n cancel: CancelToken\n): Promise {\n const res = await requestAPI(\n `callback/onedrive/finish/${sessionID}`,\n {\n method: \"post\",\n data: \"{}\",\n cancelToken: cancel,\n }\n );\n\n if (res.data.code != 0) {\n throw new OneDriveFinishUploadError(res.data);\n }\n\n return res.data.data;\n}\n\nexport async function s3LikeUploadChunk(\n url: string,\n chunk: ChunkInfo,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const res = await request(url, {\n method: \"put\",\n headers: {\n \"content-type\": \"application/octet-stream\",\n },\n data: chunk.chunk,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n responseType: \"document\",\n transformResponse: undefined,\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new S3LikeChunkError(e.response.data);\n }\n\n throw e;\n });\n\n return res.headers.etag;\n}\n\nexport async function s3LikeFinishUpload(\n url: string,\n isOss: boolean,\n chunks: ChunkProgress[],\n cancel: CancelToken\n): Promise {\n let body = \"\";\n if (!isOss) {\n body += \"\";\n chunks.forEach((chunk) => {\n body += \"\";\n const part: S3Part = {\n PartNumber: chunk.index + 1,\n ETag: chunk.etag!,\n };\n body += OBJtoXML(part);\n body += \"\";\n });\n body += \"\";\n }\n\n const res = await request(url, {\n method: \"post\",\n cancelToken: cancel,\n responseType: \"document\",\n transformResponse: undefined,\n data: body,\n headers: isOss\n ? {\n \"content-type\": \"application/octet-stream\",\n \"x-oss-forbid-overwrite\": \"true\",\n \"x-oss-complete-all\": \"yes\",\n }\n : {\n \"content-type\": \"application/xhtml+xml\",\n },\n validateStatus: function (status) {\n return status == 200;\n },\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new S3LikeFinishUploadError(e.response.data);\n }\n\n throw e;\n });\n\n return res.data;\n}\n\nexport async function qiniuDriveUploadChunk(\n url: string,\n upToken: string,\n chunk: ChunkInfo,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const res = await request(`${url}/${chunk.index + 1}`, {\n method: \"put\",\n headers: {\n \"content-type\": \"application/octet-stream\",\n authorization: \"UpToken \" + upToken,\n },\n data: chunk.chunk,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new QiniuChunkError(e.response.data);\n }\n\n throw e;\n });\n\n return res.data;\n}\n\nexport async function qiniuFinishUpload(\n url: string,\n upToken: string,\n chunks: ChunkProgress[],\n cancel: CancelToken\n): Promise {\n const content: QiniuFinishUploadRequest = {\n parts: chunks.map(\n (chunk): QiniuPartsInfo => {\n return {\n etag: chunk.etag!,\n partNumber: chunk.index + 1,\n };\n }\n ),\n };\n\n const res = await request(`${url}`, {\n method: \"post\",\n headers: {\n \"content-type\": \"application/json\",\n authorization: \"UpToken \" + upToken,\n },\n data: content,\n cancelToken: cancel,\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new QiniuFinishUploadError(e.response.data);\n }\n\n throw e;\n });\n\n return res.data;\n}\n\nexport async function cosFormUploadChunk(\n url: string,\n file: File,\n policy: string,\n path: string,\n callback: string,\n sessionID: string,\n keyTime: string,\n credential: string,\n ak: string,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const bodyFormData = new FormData();\n bodyFormData.append(\"policy\", policy);\n bodyFormData.append(\"key\", path);\n bodyFormData.append(\"x-cos-meta-callback\", callback);\n bodyFormData.append(\"x-cos-meta-key\", sessionID);\n bodyFormData.append(\"q-sign-algorithm\", \"sha1\");\n bodyFormData.append(\"q-key-time\", keyTime);\n bodyFormData.append(\"q-ak\", ak);\n bodyFormData.append(\"q-signature\", credential);\n bodyFormData.append(\"name\", file.name);\n // File must be the last element in the form\n bodyFormData.append(\"file\", file);\n\n const res = await request(`${url}`, {\n method: \"post\",\n headers: {\n \"content-type\": \"multipart/form-data\",\n },\n data: bodyFormData,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n responseType: \"document\",\n transformResponse: undefined,\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new COSUploadError(e.response.data);\n }\n\n throw e;\n });\n\n return res.data;\n}\n\nexport async function cosUploadCallback(\n sessionID: string,\n cancel: CancelToken\n): Promise {\n const res = await requestAPI(`callback/cos/${sessionID}`, {\n method: \"get\",\n data: \"{}\",\n cancelToken: cancel,\n });\n\n if (res.data.code != 0) {\n throw new COSUploadCallbackError(res.data);\n }\n\n return res.data.data;\n}\n\nexport async function upyunFormUploadChunk(\n url: string,\n file: File,\n policy: string,\n credential: string,\n onProgress: (p: Progress) => void,\n cancel: CancelToken\n): Promise {\n const bodyFormData = new FormData();\n bodyFormData.append(\"policy\", policy);\n bodyFormData.append(\"authorization\", credential);\n // File must be the last element in the form\n bodyFormData.append(\"file\", file);\n\n const res = await request(`${url}`, {\n method: \"post\",\n headers: {\n \"content-type\": \"multipart/form-data\",\n },\n data: bodyFormData,\n onUploadProgress: (progressEvent) => {\n onProgress({\n loaded: progressEvent.loaded,\n total: progressEvent.total,\n });\n },\n cancelToken: cancel,\n }).catch((e) => {\n if (e instanceof HTTPError && e.response) {\n throw new UpyunUploadError(e.response.data);\n }\n\n throw e;\n });\n\n return res.data;\n}\n\nexport async function s3LikeUploadCallback(\n sessionID: string,\n cancel: CancelToken\n): Promise {\n const res = await requestAPI(`callback/s3/${sessionID}`, {\n method: \"get\",\n data: \"{}\",\n cancelToken: cancel,\n });\n\n if (res.data.code != 0) {\n throw new S3LikeUploadCallbackError(res.data);\n }\n\n return res.data.data;\n}\n","import { Policy, PolicyType, Task, TaskType } from \"./types\";\nimport Logger, { LogLevel } from \"./logger\";\nimport { UnknownPolicyError, UploaderError, UploaderErrorName } from \"./errors\";\nimport Base from \"./uploader/base\";\nimport Local from \"./uploader/local\";\nimport { Pool } from \"./utils/pool\";\nimport {\n cleanupResumeCtx,\n getAllFileEntries,\n getDirectoryUploadDst,\n getFileInput,\n isFileDrop,\n listResumeCtx,\n} from \"./utils\";\nimport Remote from \"./uploader/remote\";\nimport OneDrive from \"./uploader/onedrive\";\nimport OSS from \"./uploader/oss\";\nimport Qiniu from \"./uploader/qiniu\";\nimport COS from \"./uploader/cos\";\nimport Upyun from \"./uploader/upyun\";\nimport S3 from \"./uploader/s3\";\nimport ResumeHint from \"./uploader/placeholder\";\n\nexport interface Option {\n logLevel: LogLevel;\n concurrentLimit: number;\n dropZone?: HTMLElement;\n onDropOver?: (e: DragEvent) => void;\n onDropLeave?: (e: DragEvent) => void;\n onToast: (type: string, msg: string) => void;\n onDropFileAdded?: (uploaders: Base[]) => void;\n}\n\nexport enum SelectType {\n File,\n Directory,\n}\n\nexport default class UploadManager {\n public logger: Logger;\n public pool: Pool;\n private static id = 0;\n private policy?: Policy;\n private fileInput: HTMLInputElement;\n private directoryInput: HTMLInputElement;\n private id = ++UploadManager.id;\n // used for proactive upload (drop, paste)\n private currentPath = \"/\";\n\n constructor(private o: Option) {\n this.logger = new Logger(o.logLevel, \"MANAGER\");\n this.logger.info(`Initialized with log level: ${o.logLevel}`);\n\n this.pool = new Pool(o.concurrentLimit);\n this.fileInput = getFileInput(this.id, false);\n this.directoryInput = getFileInput(this.id, true);\n\n if (o.dropZone) {\n this.logger.info(`Drag and drop container set to:`, o.dropZone);\n o.dropZone.addEventListener(\"dragenter\", (e) => {\n if (isFileDrop(e)) {\n e.preventDefault();\n if (o.onDropOver) {\n o.onDropOver(e);\n }\n }\n });\n\n o.dropZone.addEventListener(\"dragleave\", (e) => {\n if (isFileDrop(e)) {\n e.preventDefault();\n if (o.onDropLeave) {\n o.onDropLeave(e);\n }\n }\n });\n\n o.dropZone.addEventListener(\"drop\", this.onFileDroppedIn);\n }\n }\n\n changeConcurrentLimit = (newLimit: number) => {\n this.pool.limit = newLimit;\n };\n\n dispatchUploader(task: Task): Base {\n if (task.type == TaskType.resumeHint) {\n return new ResumeHint(task, this);\n }\n\n switch (task.policy.type) {\n case PolicyType.local:\n return new Local(task, this);\n case PolicyType.remote:\n return new Remote(task, this);\n case PolicyType.onedrive:\n return new OneDrive(task, this);\n case PolicyType.oss:\n return new OSS(task, this);\n case PolicyType.qiniu:\n return new Qiniu(task, this);\n case PolicyType.cos:\n return new COS(task, this);\n case PolicyType.upyun:\n return new Upyun(task, this);\n case PolicyType.s3:\n return new S3(task, this);\n default:\n throw new UnknownPolicyError(\n \"Unknown policy type.\",\n task.policy\n );\n }\n }\n\n // 设定当前存储策略\n public setPolicy(p: Policy, path: string) {\n this.policy = p;\n this.currentPath = path;\n if (p == undefined) {\n this.logger.info(`Currently no policy selected`);\n return;\n }\n\n this.logger.info(`Switching policy to:`, p);\n\n if (p.allowedSuffix != undefined && p.allowedSuffix.length > 0) {\n const acceptVal = p.allowedSuffix\n .map((v) => {\n return \".\" + v;\n })\n .join(\",\");\n this.logger.info(`Set allowed file suffix to ${acceptVal}`);\n this.fileInput.setAttribute(\"accept\", acceptVal);\n } else {\n this.logger.info(`Set allowed file suffix to *`);\n this.fileInput.removeAttribute(\"accept\");\n }\n }\n\n // 选择文件\n public select = (dst: string, type = SelectType.File): Promise => {\n return new Promise((resolve) => {\n if (this.policy == undefined) {\n this.logger.warn(\n `Calling file selector while no policy is set`\n );\n throw new UploaderError(\n UploaderErrorName.NoPolicySelected,\n \"No policy selected.\"\n );\n }\n\n this.fileInput.onchange = (ev: Event) =>\n this.fileSelectCallback(ev, dst, resolve);\n this.directoryInput.onchange = (ev: Event) =>\n this.fileSelectCallback(ev, dst, resolve);\n this.fileInput.value = \"\";\n this.directoryInput.value = \"\";\n type == SelectType.File\n ? this.fileInput.click()\n : this.directoryInput.click();\n });\n };\n\n public resumeTasks = (): Base[] => {\n const tasks = listResumeCtx(this.logger);\n if (tasks.length > 0) {\n this.logger.info(\n `Resumed ${tasks.length} unfinished task(s) from local storage:`,\n tasks\n );\n }\n return tasks\n .filter(\n (t) =>\n t.chunkProgress.length > 0 && t.chunkProgress[0].loaded > 0\n )\n .map((t) =>\n this.dispatchUploader({ ...t, type: TaskType.resumeHint })\n );\n };\n\n public cleanupSessions = () => {\n cleanupResumeCtx(this.logger);\n };\n\n private fileSelectCallback = (\n ev: Event | File[],\n dst: string,\n resolve: (value?: Base[] | PromiseLike | undefined) => void\n ) => {\n let files: File[] = [];\n if (ev instanceof Event) {\n const target = ev.target as HTMLInputElement;\n if (!ev || !target || !target.files) return;\n if (target.files.length > 0) {\n files = Array.from(target.files);\n }\n } else {\n files = ev as File[];\n }\n\n if (files.length > 0) {\n resolve(\n files.map(\n (file): Base =>\n this.dispatchUploader({\n type: TaskType.file,\n policy: this.policy as Policy,\n dst: getDirectoryUploadDst(dst, file),\n file: file,\n size: file.size,\n name: file.name,\n chunkProgress: [],\n resumed: false,\n })\n )\n );\n }\n };\n\n private onFileDroppedIn = async (e: DragEvent) => {\n const containFile =\n e.dataTransfer && e.dataTransfer.types.includes(\"Files\");\n if (containFile) {\n this.o.onDropLeave && this.o.onDropLeave(e);\n const items = await getAllFileEntries(e.dataTransfer!.items);\n console.log(items);\n const uploaders = await new Promise((resolve) =>\n this.fileSelectCallback(items, this.currentPath, resolve)\n );\n this.o.onDropFileAdded && this.o.onDropFileAdded(uploaders);\n }\n };\n}\n","import Base, { Status, UploadProgress } from \"./base\";\nimport * as utils from \"../utils\";\nimport { Task, TaskType } from \"../types\";\nimport UploadManager from \"../index\";\nimport Logger from \"../logger\";\n\nexport interface ChunkProgress {\n loaded: number;\n index: number;\n etag?: string;\n}\n\nexport interface ChunkInfo {\n chunk: Blob;\n index: number;\n}\n\nexport default abstract class Chunk extends Base {\n protected chunks: Blob[];\n\n public upload = async () => {\n this.logger.info(\"Preparing uploading file chunks.\");\n this.initBeforeUploadChunks();\n\n this.logger.info(\"Starting uploading file chunks:\", this.chunks);\n this.updateLocalCache();\n for (let i = 0; i < this.chunks.length; i++) {\n if (\n this.task.chunkProgress[i].loaded < this.chunks[i].size ||\n this.chunks[i].size == 0\n ) {\n await this.uploadChunk({ chunk: this.chunks[i], index: i });\n this.logger.info(`Chunk [${i}] uploaded.`);\n this.updateLocalCache();\n }\n }\n };\n\n private initBeforeUploadChunks() {\n this.chunks = utils.getChunks(\n this.task.file,\n this.task.session?.chunkSize\n );\n const cachedInfo = utils.getResumeCtx(this.task, this.logger);\n if (cachedInfo == null) {\n this.task.chunkProgress = this.chunks.map(\n (value, index): ChunkProgress => ({\n loaded: 0,\n index,\n })\n );\n }\n\n this.notifyResumeProgress();\n }\n\n protected abstract async uploadChunk(chunkInfo: ChunkInfo): Promise;\n\n protected updateChunkProgress(loaded: number, index: number) {\n this.task.chunkProgress[index].loaded = loaded;\n this.notifyResumeProgress();\n }\n\n private notifyResumeProgress() {\n this.progress = {\n total: this.getProgressInfoItem(\n utils.sumChunk(this.task.chunkProgress),\n this.task.file.size + 1\n ),\n chunks: this.chunks.map((chunk, index) => {\n return this.getProgressInfoItem(\n this.task.chunkProgress[index].loaded,\n chunk.size,\n false\n );\n }),\n };\n this.subscriber.onProgress(this.progress);\n }\n\n private updateLocalCache() {\n utils.setResumeCtx(this.task, this.logger);\n }\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport { localUploadChunk } from \"../api\";\n\nexport default class Local extends Chunk {\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n return localUploadChunk(\n this.task.session?.sessionID!,\n chunkInfo,\n (p) => {\n this.updateChunkProgress(p.loaded, chunkInfo.index);\n },\n this.cancelToken.token\n );\n }\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport { slaveUploadChunk } from \"../api\";\n\nexport default class Remote extends Chunk {\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n return slaveUploadChunk(\n `${this.task.session?.uploadURLs[0]!}`,\n this.task.session?.credential!,\n chunkInfo,\n (p) => {\n this.updateChunkProgress(p.loaded, chunkInfo.index);\n },\n this.cancelToken.token\n );\n }\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport { finishOneDriveUpload, oneDriveUploadChunk } from \"../api\";\nimport { OneDriveChunkError, OneDriveEmptyFileSelected } from \"../errors\";\nimport { Status } from \"./base\";\n\nexport default class OneDrive extends Chunk {\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n if (chunkInfo.chunk.size === 0) {\n throw new OneDriveEmptyFileSelected();\n }\n\n const rangeEnd = this.progress.total.loaded + chunkInfo.chunk.size - 1;\n return this.sendRange(\n chunkInfo,\n this.progress.total.loaded,\n rangeEnd,\n 0\n ).catch((e) => {\n if (\n e instanceof OneDriveChunkError &&\n e.response.error.innererror &&\n e.response.error.innererror.code == \"fragmentOverlap\"\n ) {\n return this.alignChunkOffset(chunkInfo);\n }\n\n throw e;\n });\n }\n\n private async sendRange(\n chunkInfo: ChunkInfo,\n start: number,\n end: number,\n chunkOffset: number\n ) {\n const range = `bytes ${start}-${end}/${this.task.file.size}`;\n return oneDriveUploadChunk(\n `${this.task.session?.uploadURLs[0]!}`,\n range,\n chunkInfo,\n (p) => {\n this.updateChunkProgress(\n chunkOffset + p.loaded,\n chunkInfo.index\n );\n },\n this.cancelToken.token\n );\n }\n\n private async alignChunkOffset(chunkInfo: ChunkInfo) {\n this.logger.info(\n `Chunk [${chunkInfo.index}] overlapped, checking next expected range...`\n );\n const rangeStatus = await oneDriveUploadChunk(\n `${this.task.session?.uploadURLs[0]!}`,\n \"\",\n chunkInfo,\n (p) => {\n return null;\n },\n this.cancelToken.token\n );\n const expectedStart = parseInt(\n rangeStatus.nextExpectedRanges[0].split(\"-\")[0]\n );\n this.logger.info(\n `Next expected range start from OneDrive is ${expectedStart}.`\n );\n\n if (expectedStart >= this.progress.total.loaded) {\n this.logger.info(`This whole chunk is overlapped, skipping...`);\n this.updateChunkProgress(chunkInfo.chunk.size, chunkInfo.index);\n return;\n } else {\n this.updateChunkProgress(0, chunkInfo.index);\n const rangeEnd =\n this.progress.total.loaded + chunkInfo.chunk.size - 1;\n const newChunkOffset = expectedStart - this.progress.total.loaded;\n chunkInfo.chunk = chunkInfo.chunk.slice(newChunkOffset);\n this.updateChunkProgress(newChunkOffset, chunkInfo.index);\n return this.sendRange(\n chunkInfo,\n expectedStart,\n rangeEnd,\n newChunkOffset\n );\n }\n }\n\n protected async afterUpload(): Promise {\n this.logger.info(`Finishing upload...`);\n this.transit(Status.finishing);\n return finishOneDriveUpload(\n this.task.session!.sessionID,\n this.cancelToken.token\n );\n }\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport { s3LikeFinishUpload, s3LikeUploadChunk } from \"../api\";\nimport { Status } from \"./base\";\n\nexport default class OSS extends Chunk {\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n return s3LikeUploadChunk(\n this.task.session?.uploadURLs[chunkInfo.index]!,\n chunkInfo,\n (p) => {\n this.updateChunkProgress(p.loaded, chunkInfo.index);\n },\n this.cancelToken.token\n );\n }\n\n protected async afterUpload(): Promise {\n this.logger.info(`Finishing multipart upload...`);\n this.transit(Status.finishing);\n return s3LikeFinishUpload(\n this.task.session!.completeURL,\n true,\n this.task.chunkProgress,\n this.cancelToken.token\n );\n }\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport { qiniuDriveUploadChunk, qiniuFinishUpload } from \"../api\";\nimport { Status } from \"./base\";\n\nexport default class Qiniu extends Chunk {\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n const chunkRes = await qiniuDriveUploadChunk(\n this.task.session?.uploadURLs[0]!,\n this.task.session?.credential!,\n chunkInfo,\n (p) => {\n this.updateChunkProgress(p.loaded, chunkInfo.index);\n },\n this.cancelToken.token\n );\n\n this.task.chunkProgress[chunkInfo.index].etag = chunkRes.etag;\n }\n\n protected async afterUpload(): Promise {\n this.logger.info(`Finishing multipart upload...`);\n this.transit(Status.finishing);\n return qiniuFinishUpload(\n this.task.session?.uploadURLs[0]!,\n this.task.session?.credential!,\n this.task.chunkProgress,\n this.cancelToken.token\n );\n }\n}\n","import Base, { Status } from \"./base\";\nimport { cosFormUploadChunk, cosUploadCallback } from \"../api\";\n\nexport default class COS extends Base {\n public upload = async () => {\n this.logger.info(\"Starting uploading file stream:\", this.task.file);\n await cosFormUploadChunk(\n this.task.session?.uploadURLs[0]!,\n this.task.file,\n this.task.session?.policy!,\n this.task.session?.path!,\n this.task.session?.callback!,\n this.task.session?.sessionID!,\n this.task.session?.keyTime!,\n this.task.session?.credential!,\n this.task.session?.ak!,\n (p) => {\n this.subscriber.onProgress({\n total: this.getProgressInfoItem(p.loaded, p.total),\n });\n },\n this.cancelToken.token\n );\n };\n\n protected async afterUpload(): Promise {\n this.transit(Status.finishing);\n this.logger.info(`Sending COS upload callback...`);\n try {\n await cosUploadCallback(\n this.task.session!.sessionID,\n this.cancelToken.token\n );\n } catch (e) {\n this.logger.warn(`Failed to finish COS upload:`, e);\n }\n }\n}\n","import Base from \"./base\";\nimport { upyunFormUploadChunk } from \"../api\";\n\nexport default class Upyun extends Base {\n public upload = async () => {\n this.logger.info(\"Starting uploading file stream:\", this.task.file);\n await upyunFormUploadChunk(\n this.task.session?.uploadURLs[0]!,\n this.task.file,\n this.task.session?.policy!,\n this.task.session?.credential!,\n (p) => {\n this.subscriber.onProgress({\n total: this.getProgressInfoItem(p.loaded, p.total),\n });\n },\n this.cancelToken.token\n );\n };\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport {\n s3LikeFinishUpload,\n s3LikeUploadCallback,\n s3LikeUploadChunk,\n} from \"../api\";\nimport { Status } from \"./base\";\n\nexport default class OSS extends Chunk {\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n const etag = await s3LikeUploadChunk(\n this.task.session?.uploadURLs[chunkInfo.index]!,\n chunkInfo,\n (p) => {\n this.updateChunkProgress(p.loaded, chunkInfo.index);\n },\n this.cancelToken.token\n );\n\n this.task.chunkProgress[chunkInfo.index].etag = etag;\n }\n\n protected async afterUpload(): Promise {\n this.logger.info(`Finishing multipart upload...`);\n this.transit(Status.finishing);\n await s3LikeFinishUpload(\n this.task.session!.completeURL,\n false,\n this.task.chunkProgress,\n this.cancelToken.token\n );\n\n this.logger.info(`Sending S3-like upload callback...`);\n return s3LikeUploadCallback(\n this.task.session!.sessionID,\n this.cancelToken.token\n );\n }\n}\n","import Chunk, { ChunkInfo } from \"./chunk\";\nimport { qiniuDriveUploadChunk, qiniuFinishUpload } from \"../api\";\nimport { Status } from \"./base\";\nimport { Task } from \"../types\";\nimport UploadManager from \"../index\";\nimport * as utils from \"../utils\";\n\nexport default class ResumeHint extends Chunk {\n constructor(task: Task, manager: UploadManager) {\n super(task, manager);\n this.status = Status.resumable;\n this.progress = {\n total: this.getProgressInfoItem(\n utils.sumChunk(this.task.chunkProgress),\n this.task.size + 1\n ),\n };\n this.subscriber.onProgress(this.progress);\n }\n\n protected async uploadChunk(chunkInfo: ChunkInfo) {\n return null;\n }\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Badge, CircularProgress, makeStyles } from \"@material-ui/core\";\nimport SpeedDial from \"@material-ui/lab/SpeedDial\";\nimport SpeedDialIcon from \"@material-ui/lab/SpeedDialIcon\";\nimport SpeedDialAction from \"@material-ui/lab/SpeedDialAction\";\nimport CreateNewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\nimport PublishIcon from \"@material-ui/icons/Publish\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport AutoHidden from \"./AutoHidden\";\nimport statusHelper from \"../../utils/page\";\nimport Backdrop from \"@material-ui/core/Backdrop\";\nimport { FilePlus, FolderUpload } from \"mdi-material-ui\";\nimport { green } from \"@material-ui/core/colors\";\nimport clsx from \"clsx\";\nimport { SelectType } from \"../Uploader/core\";\nimport { openCreateFileDialog, openCreateFolderDialog, toggleSnackbar } from \"../../redux/explorer\";\nimport InfoIcon from '@material-ui/icons/Info';\nimport LocalPrintshopIcon from '@material-ui/icons/LocalPrintshop';\n\n\nconst useStyles = makeStyles(() => ({\n fab: {\n margin: 0,\n top: \"auto\",\n right: 20,\n bottom: 20,\n left: \"auto\",\n zIndex: 5,\n position: \"fixed\",\n },\n badge: {\n position: \"absolute\",\n bottom: 26,\n top: \"auto\",\n zIndex: 9999,\n right: 7,\n },\n \"@global\": {\n \".MuiSpeedDialAction-staticTooltipLabel\": {\n width: 100,\n },\n },\n fabProgress: {\n color: green[500],\n position: \"absolute\",\n bottom: -6,\n left: -6,\n zIndex: 1,\n },\n buttonSuccess: {\n backgroundColor: green[500],\n \"&:hover\": {\n backgroundColor: green[700],\n },\n },\n}));\n\nexport default function UploadButton(props) {\n const [open, setOpen] = useState(false);\n const [queued, setQueued] = useState(5);\n const path = useSelector((state) => state.navigator.path);\n const classes = useStyles();\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const OpenNewFolderDialog = useCallback(\n () => dispatch(openCreateFolderDialog()),\n [dispatch]\n );\n const OpenNewFileDialog = useCallback(\n () => dispatch(openCreateFileDialog()),\n [dispatch]\n );\n\n useEffect(() => {\n setQueued(props.Queued);\n }, [props.Queued]);\n\n const uploadClicked = () => {\n if (open) {\n if (queued !== 0) {\n props.openFileList();\n } else {\n props.selectFile(path);\n }\n }\n };\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const circularProgress = useMemo(() => {\n if (props.progress.totalSize > 0) {\n return (\n \n );\n }\n }, [classes, props.progress]);\n\n return (\n \n \n \n \n );\n}\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { formatLocalTime } from \"../../../utils/datetime\";\nimport { sizeToString } from \"../../../utils\";\nimport Link from \"@material-ui/core/Link\";\nimport TimeAgo from \"timeago-react\";\nimport { Status } from \"../core/uploader/base\";\n\nconst useStyles = makeStyles((theme) => ({\n infoTitle: {\n fontWeight: 700,\n },\n infoValue: {\n color: theme.palette.text.secondary,\n wordBreak: \"break-all\",\n },\n}));\n\nexport default function TaskDetail({ uploader, navigateToDst, error }) {\n const classes = useStyles();\n const items = [\n {\n name: \"文件名\",\n value: uploader.task.name,\n },\n {\n name: \"文件大小\",\n value: `${sizeToString(uploader.task.size)} ${\n uploader.task.session && uploader.task.session.chunkSize > 0\n ? `(${\n uploader.task.chunkProgress.length\n } 个分片, 每个分片 ${sizeToString(\n uploader.task.session.chunkSize\n )})`\n : \"(无分片)\"\n }`,\n },\n {\n name: \"存储策略\",\n value: uploader.task.policy.name,\n },\n {\n name: \"目的路径\",\n value: (\n navigateToDst(uploader.task.dst)}\n >\n {uploader.task.dst === \"/\" ? \"根目录\" : uploader.task.dst}\n \n ),\n },\n uploader.task.session\n ? {\n name: \"上传会话\",\n value: (\n <>\n \n {\"过期\"}\n \n ),\n }\n : null,\n uploader.status === Status.error\n ? {\n name: \"错误信息\",\n value: error,\n }\n : null,\n ];\n return (\n \n {items.map((i) => (\n <>\n {i && (\n \n \n {i.name}:\n \n \n {i.value}\n \n \n )}\n \n ))}\n \n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n Divider,\n Grow,\n IconButton,\n ListItem,\n ListItemText,\n makeStyles,\n Tooltip,\n} from \"@material-ui/core\";\nimport TypeIcon from \"../../FileManager/TypeIcon\";\nimport { useUpload } from \"../UseUpload\";\nimport { Status } from \"../core/uploader/base\";\nimport { UploaderError } from \"../core/errors\";\nimport { filename, sizeToString } from \"../../../utils\";\nimport { darken, lighten } from \"@material-ui/core/styles/colorManipulator\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport Chip from \"@material-ui/core/Chip\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport { useDispatch } from \"react-redux\";\nimport Link from \"@material-ui/core/Link\";\nimport PlayArrow from \"@material-ui/icons/PlayArrow\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport TaskDetail from \"./TaskDetail\";\nimport { SelectType } from \"../core\";\nimport { navigateTo } from \"../../../redux/explorer\";\n\nconst useStyles = makeStyles((theme) => ({\n progressContent: {\n position: \"relative\",\n zIndex: 9,\n },\n progress: {\n transition: \"width .4s linear\",\n zIndex: 1,\n height: \"100%\",\n position: \"absolute\",\n left: 0,\n top: 0,\n },\n progressContainer: {\n position: \"relative\",\n },\n listAction: {\n marginLeft: 20,\n marginRight: 20,\n },\n wordBreak: {\n wordBreak: \"break-all\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n successStatus: {\n color: theme.palette.success.main,\n },\n errorStatus: {\n color: theme.palette.warning.main,\n wordBreak: \"break-all\",\n [theme.breakpoints.up(\"sm\")]: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n },\n disabledBadge: {\n marginLeft: theme.spacing(1),\n height: 18,\n },\n delete: {\n zIndex: 9,\n },\n dstLink: {\n color: theme.palette.success.main,\n fontWeight: 600,\n },\n fileNameContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n}));\n\nconst ExpansionPanel = withStyles({\n root: {\n maxWidth: \"100%\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {\n margin: 0,\n },\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n minHeight: 0,\n padding: 0,\n display: \"block\",\n \"&$expanded\": {},\n },\n content: {\n margin: 0,\n display: \"block\",\n \"&$expanded\": {\n margin: \"0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n paddingLeft: 16,\n paddingRight: 16,\n paddingTop: 8,\n paddingBottom: 8,\n display: \"block\",\n backgroundColor: theme.palette.background.default,\n },\n}))(MuiExpansionPanelDetails);\n\nconst getSpeedText = (speed, speedAvg, useSpeedAvg) => {\n let displayedSpeed = speedAvg;\n if (!useSpeedAvg) {\n displayedSpeed = speed;\n }\n\n return `${sizeToString(displayedSpeed ? displayedSpeed : 0)} /s`;\n};\n\nconst getErrMsg = (error) => {\n let errMsg = error.message;\n if (error instanceof UploaderError) {\n errMsg = error.Message(\"\");\n }\n\n return errMsg;\n};\n\nexport default function UploadTask({\n uploader,\n useAvgSpeed,\n onCancel,\n onClose,\n selectFile,\n onRefresh,\n}) {\n const classes = useStyles();\n const theme = useTheme();\n const [taskHover, setTaskHover] = useState(false);\n const [expanded, setExpanded] = useState(false);\n const { status, error, progress, speed, speedAvg, retry } = useUpload(\n uploader\n );\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const [loading, setLoading] = useState(false);\n const dispatch = useDispatch();\n const NavigateTo = useCallback((k) => dispatch(navigateTo(k)), [dispatch]);\n const navigateToDst = (path) => {\n onClose(null, \"backdropClick\");\n NavigateTo(path);\n };\n\n const toggleDetail = (event, newExpanded) => {\n setExpanded(!!newExpanded);\n };\n\n useEffect(() => {\n if (status >= Status.finished) {\n onRefresh();\n }\n }, [status]);\n\n const statusText = useMemo(() => {\n const parent = filename(uploader.task.dst);\n switch (status) {\n case Status.added:\n case Status.initialized:\n case Status.queued:\n return
排队中...
;\n case Status.preparing:\n return
准备中...
;\n case Status.error:\n return (\n
\n {getErrMsg(error)}\n
\n
\n );\n case Status.finishing:\n return
处理中...
;\n case Status.resumable:\n return (\n
\n {`已上传 ${sizeToString(\n progress.total.loaded\n )} , 共 ${sizeToString(\n progress.total.size\n )} - ${progress.total.percent.toFixed(2)}%`}\n
\n );\n case Status.processing:\n if (progress) {\n return (\n
\n {`${getSpeedText(\n speed,\n speedAvg,\n useAvgSpeed\n )} 已上传 ${sizeToString(\n progress.total.loaded\n )} , 共 ${sizeToString(\n progress.total.size\n )} - ${progress.total.percent.toFixed(2)}%`}\n
\n );\n }\n return
已上传 -
;\n case Status.finished:\n return (\n
\n 已上传至{\" \"}\n \n navigateToDst(uploader.task.dst)}\n >\n {parent === \"\" ? \"根目录\" : parent}\n \n \n
\n
\n );\n default:\n return
未知
;\n }\n }, [status, error, progress, speed, speedAvg, useAvgSpeed]);\n\n const resumeLabel = useMemo(\n () =>\n uploader.task.resumed && !fullScreen ? (\n \n ) : null,\n [status, fullScreen]\n );\n\n const continueLabel = useMemo(\n () =>\n status === Status.resumable && !fullScreen ? (\n \n ) : null,\n [status, fullScreen]\n );\n\n const progressBar = useMemo(\n () =>\n (status === Status.processing ||\n status === Status.finishing ||\n status === Status.resumable) &&\n progress ? (\n \n ) : null,\n [status, progress, theme]\n );\n\n const taskDetail = useMemo(() => {\n return (\n \n );\n }, [uploader, expanded]);\n\n const cancel = () => {\n setLoading(true);\n uploader.cancel().then(() => {\n setLoading(false);\n onCancel((u) => u.id != uploader.id);\n });\n };\n\n const stopRipple = (e) => {\n e.stopPropagation();\n };\n\n const secondaryAction = useMemo(() => {\n if (!taskHover && !fullScreen) {\n return <>;\n }\n\n const actions = [\n {\n show: status === Status.error,\n title: \"重试\",\n click: retry,\n icon: ,\n loading: false,\n },\n {\n show: true,\n title:\n status === Status.finished ? \"删除任务记录\" : \"取消并删除\",\n click: cancel,\n icon: ,\n loading: loading,\n },\n {\n show: status === Status.resumable,\n title: \"选取同样文件并恢复上传\",\n click: () =>\n selectFile(uploader.task.dst, SelectType.File, uploader),\n icon: ,\n loading: false,\n },\n ];\n\n return (\n <>\n {actions.map((a) => (\n <>\n {a.show && (\n \n \n {\n e.stopPropagation();\n a.click();\n }}\n >\n {a.icon}\n \n \n \n )}\n \n ))}\n \n );\n }, [status, loading, taskHover, fullScreen, uploader]);\n\n const fileIcon = useMemo(() => {\n if (!fullScreen) {\n return ;\n }\n }, [uploader, fullScreen]);\n\n return (\n <>\n \n \n setTaskHover(false)}\n onMouseOver={() => setTaskHover(true)}\n >\n {progressBar}\n \n {fileIcon}\n \n
\n {uploader.task.name}\n
\n
{resumeLabel}
\n
{continueLabel}
\n
\n }\n secondary={\n
\n {statusText}\n
\n }\n />\n {secondaryAction}\n \n \n \n {taskDetail}\n \n \n \n );\n}\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\n\nexport function useUpload(uploader) {\n const startLoadedRef = useRef(0);\n const [status, setStatus] = useState(uploader.status);\n const [error, setError] = useState(uploader.error);\n const [progress, setProgress] = useState(uploader.progress);\n const dispatch = useDispatch();\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n /* eslint-disable @typescript-eslint/no-empty-function */\n uploader.subscribe({\n onTransition: (newStatus) => {\n setStatus(newStatus);\n },\n onError: (err) => {\n setError(err);\n setStatus(uploader.status);\n },\n onProgress: (data) => {\n setProgress(data);\n },\n onMsg: (msg, color) => {\n ToggleSnackbar(\"top\", \"right\", msg, color);\n },\n });\n }, []);\n\n // 获取上传速度\n const [speed, speedAvg] = React.useMemo(() => {\n if (\n progress == null ||\n progress.total == null ||\n progress.total.loaded == null\n )\n return [0, 0];\n const duration = (Date.now() - (uploader.lastTime || 0)) / 1000;\n const durationTotal = (Date.now() - (uploader.startTime || 0)) / 1000;\n const res =\n progress.total.loaded > startLoadedRef.current\n ? Math.floor(\n (progress.total.loaded - startLoadedRef.current) /\n duration\n )\n : 0;\n const resAvg =\n progress.total.loaded > 0\n ? Math.floor(progress.total.loaded / durationTotal)\n : 0;\n\n startLoadedRef.current = progress.total.loaded;\n uploader.lastTime = Date.now();\n return [res, resAvg];\n }, [progress]);\n\n const retry = () => {\n uploader.reset();\n uploader.start();\n };\n\n return { status, error, progress, speed, speedAvg, retry };\n}\n","import React, { useState } from \"react\";\nimport { Input, InputLabel, makeStyles } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n} from \"@material-ui/core\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Auth from \"../../middleware/Auth\";\nconst useStyles = makeStyles((theme) => ({}));\n\nexport default function ConcurrentOptionDialog({ open, onClose, onSave }) {\n const [count, setCount] = useState(\n Auth.GetPreferenceWithDefault(\"concurrent_limit\", \"1\")\n );\n const classes = useStyles();\n\n return (\n \n 任务并行数量\n\n \n \n \n 同时上传的任务数量\n \n setCount(e.target.value)}\n />\n \n \n\n \n \n
\n onSave(count)}\n >\n 确定\n \n
\n
\n \n );\n}\n","import {\n Icon,\n ListItemIcon,\n makeStyles,\n Menu,\n MenuItem,\n Tooltip,\n} from \"@material-ui/core\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../../../middleware/Api\";\nimport { TaskType } from \"../core/types\";\nimport { refreshStorage, toggleSnackbar } from \"../../../redux/explorer\";\nimport Divider from \"@material-ui/core/Divider\";\nimport CheckIcon from \"@material-ui/icons/Check\";\nimport { DeleteEmpty } from \"mdi-material-ui\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport ConcurrentOptionDialog from \"../../Modals/ConcurrentOption\";\nimport Auth from \"../../../middleware/Auth\";\nimport { ClearAll } from \"@material-ui/icons\";\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n minWidth: 38,\n },\n}));\n\nexport default function MoreActions({\n anchorEl,\n onClose,\n uploadManager,\n deleteTask,\n useAvgSpeed,\n setUseAvgSpeed,\n filter,\n setFilter,\n sorter,\n setSorter,\n cleanFinished,\n}) {\n const classes = useStyles();\n const dispatch = useDispatch();\n const [concurrentDialog, setConcurrentDialog] = useState(false);\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const RefreshStorage = useCallback(() => dispatch(refreshStorage()), [\n dispatch,\n ]);\n\n const actionClicked = (next) => () => {\n onClose();\n next();\n };\n\n const cleanupSessions = () => {\n uploadManager.cleanupSessions();\n API.delete(\"/file/upload\")\n .then((response) => {\n if (response.rawData.code === 0) {\n ToggleSnackbar(\"top\", \"right\", \"上传会话已清除\", \"success\");\n } else {\n ToggleSnackbar(\n \"top\",\n \"right\",\n response.rawData.msg,\n \"warning\"\n );\n }\n deleteTask((u) => u.task.type !== TaskType.resumeHint);\n RefreshStorage();\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n const open = Boolean(anchorEl);\n const id = open ? \"uploader-action-popover\" : undefined;\n\n const listItems = useMemo(\n () => [\n {\n tooltip: \"列表中不显示已完成、失败、被取消的任务\",\n onClick: () =>\n setFilter(filter === \"default\" ? \"ongoing\" : \"default\"),\n icon: filter !== \"default\" ? : ,\n text: \"隐藏已完成任务\",\n divider: true,\n },\n {\n tooltip: \"最先添加的任务排在最前\",\n onClick: () => setSorter(\"default\"),\n icon: sorter === \"default\" ? : ,\n text: \"最先添加靠前\",\n divider: false,\n },\n {\n tooltip: \"最后添加的任务排在最前\",\n onClick: () => setSorter(\"reverse\"),\n icon: sorter === \"reverse\" ? : ,\n text: \"最后添加靠前\",\n divider: true,\n },\n {\n tooltip: \"单个任务上传速度展示为瞬时速度\",\n onClick: () => setUseAvgSpeed(false),\n icon: useAvgSpeed ? : ,\n text: \"瞬时速度\",\n divider: false,\n },\n {\n tooltip: \"单个任务上传速度展示为平均速度\",\n onClick: () => setUseAvgSpeed(true),\n icon: !useAvgSpeed ? : ,\n text: \"平均速度\",\n divider: true,\n },\n {\n tooltip: \"清空服务端所有未完成的上传会话\",\n onClick: () => cleanupSessions(),\n icon: ,\n text: \"清空所有上传会话\",\n divider: false,\n },\n {\n tooltip: \"清除列表中已完成、失败、被取消的任务\",\n onClick: () => cleanFinished(),\n icon: ,\n text: \"清除已完成任务\",\n divider: true,\n },\n {\n tooltip: \"设置你希望的同时上传数量\",\n onClick: () => setConcurrentDialog(true),\n icon: ,\n text: \"设置并行数量\",\n divider: false,\n },\n ],\n [\n useAvgSpeed,\n setUseAvgSpeed,\n sorter,\n setSorter,\n filter,\n setFilter,\n cleanFinished,\n ]\n );\n\n const onConcurrentLimitSave = (val) => {\n val = parseInt(val);\n if (val > 0) {\n Auth.SetPreference(\"concurrent_limit\", val);\n uploadManager.changeConcurrentLimit(parseInt(val));\n }\n setConcurrentDialog(false);\n };\n\n return (\n <>\n \n {listItems.map((item) => (\n <>\n \n \n \n {item.icon}\n \n {item.text}\n \n \n {item.divider && }\n \n ))}\n \n setConcurrentDialog(false)}\n onSave={onConcurrentLimitSave}\n />\n \n );\n}\n","import React, { useMemo, useState } from \"react\";\nimport {\n Accordion,\n AccordionDetails,\n AppBar,\n Dialog,\n DialogContent,\n Fade,\n IconButton,\n makeStyles,\n Slide,\n Toolbar,\n Tooltip,\n Typography,\n} from \"@material-ui/core\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandLess\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport classnames from \"classnames\";\nimport UploadTask from \"./UploadTask\";\nimport { MoreHoriz } from \"@material-ui/icons\";\nimport MoreActions from \"./MoreActions\";\nimport { useSelector } from \"react-redux\";\nimport { Virtuoso } from \"react-virtuoso\";\nimport Nothing from \"../../Placeholder/Nothing\";\nimport { lighten } from \"@material-ui/core/styles/colorManipulator\";\nimport { Status } from \"../core/uploader/base\";\nimport Auth from \"../../../middleware/Auth\";\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});\n\nconst useStyles = makeStyles((theme) => ({\n rootOverwrite: {\n top: \"auto!important\",\n left: \"auto!important\",\n },\n appBar: {\n position: \"relative\",\n },\n flex: {\n flex: 1,\n },\n popup: {\n alignItems: \"flex-end\",\n justifyContent: \"flex-end\",\n },\n dialog: {\n margin: 0,\n right: 10,\n bottom: 10,\n zIndex: 9999,\n position: \"fixed\",\n inset: \"-1!important\",\n },\n paddingZero: {\n padding: 0,\n },\n dialogContent: {\n [theme.breakpoints.up(\"md\")]: {\n width: 500,\n minHeight: 300,\n maxHeight: \"calc(100vh - 140px)\",\n },\n padding: 0,\n paddingTop: \"0!important\",\n },\n virtualList: {\n height: \"100%\",\n maxHeight: \"calc(100vh - 56px)\",\n [theme.breakpoints.up(\"md\")]: {\n minHeight: 300,\n maxHeight: \"calc(100vh - 140px)\",\n },\n },\n expandIcon: {\n transform: \"rotate(0deg)\",\n transition: theme.transitions.create(\"transform\", {\n duration: theme.transitions.duration.shortest,\n }),\n },\n expandIconExpanded: {\n transform: \"rotate(180deg)\",\n },\n toolbar: {\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n },\n progress: {\n transition: \"width .4s linear\",\n zIndex: -1,\n height: \"100%\",\n position: \"absolute\",\n left: 0,\n top: 0,\n },\n}));\n\nconst sorters = {\n default: (a, b) => a.id - b.id,\n reverse: (a, b) => b.id - a.id,\n};\n\nconst filters = {\n default: (u) => true,\n ongoing: (u) => u.status < Status.finished,\n};\n\nexport default function TaskList({\n open,\n onClose,\n selectFile,\n taskList,\n onCancel,\n uploadManager,\n progress,\n setUploaders,\n}) {\n const classes = useStyles();\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const path = useSelector((state) => state.navigator.path);\n const [expanded, setExpanded] = useState(true);\n const [useAvgSpeed, setUseAvgSpeed] = useState(\n Auth.GetPreferenceWithDefault(\"use_avg_speed\", true)\n );\n const [anchorEl, setAnchorEl] = useState(null);\n const [filter, setFilter] = useState(\n Auth.GetPreferenceWithDefault(\"task_filter\", \"default\")\n );\n const [sorter, setSorter] = useState(\n Auth.GetPreferenceWithDefault(\"task_sorter\", \"default\")\n );\n const [refreshList, setRefreshList] = useState(false);\n\n const handleActionClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleActionClose = () => {\n setAnchorEl(null);\n };\n\n const close = (e, reason) => {\n if (reason !== \"backdropClick\") {\n onClose();\n } else {\n setExpanded(false);\n }\n };\n const handlePanelChange = (event, isExpanded) => {\n setExpanded(isExpanded);\n };\n\n useMemo(() => {\n if (open) {\n setExpanded(true);\n }\n }, [taskList]);\n\n const progressBar = useMemo(\n () =>\n progress.totalSize > 0 ? (\n 0 && !expanded}>\n
\n \n
\n
\n ) : null,\n [progress, expanded, classes, theme]\n );\n\n const list = useMemo(() => {\n const currentList = taskList\n .filter(filters[filter])\n .sort(sorters[sorter]);\n if (currentList.length === 0) {\n return ;\n }\n\n return (\n (\n setRefreshList((r) => !r)}\n />\n )}\n />\n );\n }, [\n classes,\n taskList,\n useAvgSpeed,\n fullScreen,\n filter,\n sorter,\n refreshList,\n ]);\n\n return (\n <>\n {\n Auth.SetPreference(\"use_avg_speed\", v);\n setUseAvgSpeed(v);\n }}\n filter={filter}\n sorter={sorter}\n setFilter={(v) => {\n Auth.SetPreference(\"task_filter\", v);\n setFilter(v);\n }}\n setSorter={(v) => {\n Auth.SetPreference(\"task_sorter\", v);\n setSorter(v);\n }}\n cleanFinished={() =>\n setUploaders((u) => u.filter(filters[\"ongoing\"]))\n }\n />\n \n \n \n {progressBar}\n \n \n \n \n \n \n \n 上传队列\n \n \n \n \n \n \n \n selectFile(path)}\n >\n \n \n \n {!fullScreen && (\n \n setExpanded(!expanded)}\n >\n \n \n \n )}\n \n \n \n \n {list}\n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport Backdrop from \"@material-ui/core/Backdrop\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\nimport UploadIcon from \"@material-ui/icons/CloudUpload\";\nimport { Typography } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n backdrop: {\n zIndex: theme.zIndex.drawer + 1,\n color: \"#fff\",\n flexDirection: \"column\",\n },\n })\n);\n\nexport function DropFileBackground({ open }) {\n const classes = useStyles();\n return (\n \n
\n \n
\n
\n 松开鼠标开始上传\n
\n
\n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport UploadManager, { SelectType } from \"./core\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport UploadButton from \"../Dial/Create\";\nimport pathHelper from \"../../utils/page\";\nimport { useLocation } from \"react-router-dom\";\nimport { UploaderError } from \"./core/errors\";\nimport TaskList from \"./Popup/TaskList\";\nimport { Status } from \"./core/uploader/base\";\nimport { DropFileBackground } from \"../Placeholder/DropFile\";\nimport {\n refreshFileList,\n refreshStorage,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport Auth from \"../../middleware/Auth\";\n\nlet totalProgressCollector = null;\nlet lastProgressStart = -1;\nlet dragCounter = 0;\n\nexport default function Uploader() {\n const [uploaders, setUploaders] = useState([]);\n const [taskListOpen, setTaskListOpen] = useState(false);\n const [dropBgOpen, setDropBgOpen] = useState(0);\n const [totalProgress, setTotalProgress] = useState({\n totalSize: 0,\n processedSize: 0,\n total: 0,\n processed: 0,\n });\n const search = useSelector((state) => state.explorer.search);\n const policy = useSelector((state) => state.explorer.currentPolicy);\n const isLogin = useSelector((state) => state.viewUpdate.isLogin);\n const path = useSelector((state) => state.navigator.path);\n const fileSelectCounter = useSelector(\n (state) => state.viewUpdate.openFileSelector\n );\n const folderSelectCounter = useSelector(\n (state) => state.viewUpdate.openFolderSelector\n );\n const location = useLocation();\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const RefreshFileList = useCallback(() => dispatch(refreshFileList()), [\n dispatch,\n ]);\n const RefreshStorage = useCallback(() => dispatch(refreshStorage()), [\n dispatch,\n ]);\n\n const enableUploader = useMemo(\n () => pathHelper.isHomePage(location.pathname) && isLogin && !search,\n [location.pathname, isLogin, search]\n );\n\n const taskAdded = (original = null) => (tasks) => {\n if (original !== null) {\n if (tasks.length !== 1 || tasks[0].key() !== original.key()) {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"所选择文件与原始文件不符\",\n \"warning\"\n );\n return;\n }\n }\n\n tasks.forEach((t) => t.start());\n\n setTaskListOpen(true);\n setUploaders((uploaders) => {\n if (original !== null) {\n uploaders = uploaders.filter((u) => u.key() !== original.key());\n }\n\n return [...uploaders, ...tasks];\n });\n };\n\n const uploadManager = useMemo(() => {\n return new UploadManager({\n logLevel: \"INFO\",\n concurrentLimit: parseInt(\n Auth.GetPreferenceWithDefault(\"concurrent_limit\", \"1\")\n ),\n dropZone: document.querySelector(\"body\"),\n onToast: (type, msg) => {\n ToggleSnackbar(\"top\", \"right\", msg, type);\n },\n onDropOver: (e) => {\n dragCounter++;\n setDropBgOpen((value) => !value);\n },\n onDropLeave: (e) => {\n dragCounter--;\n setDropBgOpen((value) => !value);\n },\n onDropFileAdded: taskAdded(),\n });\n }, []);\n\n useEffect(() => {\n uploadManager.setPolicy(policy, path);\n }, [policy]);\n\n useEffect(() => {\n const unfinished = uploadManager.resumeTasks();\n setUploaders((uploaders) => [...uploaders, ...unfinished]);\n if (!totalProgressCollector) {\n totalProgressCollector = setInterval(() => {\n const progress = {\n totalSize: 0,\n processedSize: 0,\n total: 0,\n processed: 0,\n };\n setUploaders((uploaders) => {\n uploaders.forEach((u) => {\n if (u.id <= lastProgressStart) {\n return;\n }\n\n progress.totalSize += u.task.size;\n progress.total += 1;\n\n if (\n u.status === Status.finished ||\n u.status === Status.canceled ||\n u.status === Status.error\n ) {\n progress.processedSize += u.task.size;\n progress.processed += 1;\n }\n\n if (\n u.status === Status.added ||\n u.status === Status.initialized ||\n u.status === Status.queued ||\n u.status === Status.preparing ||\n u.status === Status.processing ||\n u.status === Status.finishing\n ) {\n progress.processedSize += u.progress\n ? u.progress.total.loaded\n : 0;\n }\n });\n\n if (\n progress.total > 0 &&\n progress.processed === progress.total\n ) {\n lastProgressStart = uploaders[uploaders.length - 1].id;\n }\n return uploaders;\n });\n\n if (\n progress.total > 0 &&\n progress.total === progress.processed\n ) {\n RefreshFileList();\n RefreshStorage();\n }\n\n setTotalProgress(progress);\n }, 2000);\n }\n }, []);\n\n const selectFile = (path, type = SelectType.File, original = null) => {\n setTaskListOpen(true);\n\n // eslint-disable-next-line no-unreachable\n uploadManager\n .select(path, type)\n .then(taskAdded(original))\n .catch((e) => {\n if (e instanceof UploaderError) {\n ToggleSnackbar(\"top\", \"right\", e.Message(\"\"), \"warning\");\n } else {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"出现未知错误:\" + e.message,\n \"error\"\n );\n }\n });\n };\n\n useEffect(() => {\n if (fileSelectCounter > 0) {\n selectFile(path);\n }\n }, [fileSelectCounter]);\n\n useEffect(() => {\n if (folderSelectCounter > 0) {\n selectFile(path, SelectType.Directory);\n }\n }, [folderSelectCounter]);\n\n const deleteTask = (filter) => {\n setUploaders((uploaders) => uploaders.filter(filter));\n };\n\n return (\n <>\n {enableUploader && (\n <>\n 0} />\n setTaskListOpen(true)}\n />\n setTaskListOpen(false)}\n setUploaders={setUploaders}\n />\n \n )}\n \n );\n}\n","import dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport utc from \"dayjs/plugin/utc\";\nimport Auth from \"../middleware/Auth\";\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nconst defaultTimeZone = \"Asia/Shanghai\";\nconst preferTimeZone = Auth.GetPreference(\"timeZone\");\nexport let timeZone = preferTimeZone ? preferTimeZone : defaultTimeZone;\n\nexport function refreshTimeZone() {\n timeZone = Auth.GetPreference(\"timeZone\");\n timeZone = timeZone ? timeZone : defaultTimeZone;\n}\n\nexport function formatLocalTime(time, format) {\n return dayjs(time).tz(timeZone).format(format);\n}\n\nexport function validateTimeZone(name) {\n try {\n dayjs().tz(name).format();\n } catch (e) {\n return false;\n }\n return true;\n}\n","import { ThunkAction } from \"redux-thunk\";\nimport { AnyAction } from \"redux\";\nimport Auth from \"../../middleware/Auth\";\n\nexport interface ActionSetSubtitle extends AnyAction {\n type: \"SET_SUBTITLE\";\n title: string;\n}\n\nexport const setSubtitle = (title: string): ActionSetSubtitle => {\n return {\n type: \"SET_SUBTITLE\",\n title,\n };\n};\n\nexport const closeContextMenu = () => {\n return {\n type: \"CLOSE_CONTEXT_MENU\",\n };\n};\n\nexport const changeContextMenu = (type: string, open: boolean) => {\n return {\n type: \"CHANGE_CONTEXT_MENU\",\n menuType: type,\n open: open,\n };\n};\n\nexport const changeSubTitle = (\n title: string\n): ThunkAction => {\n return (dispatch, getState) => {\n const state = getState();\n document.title =\n title === null || title === undefined\n ? state.siteConfig.title\n : title + \" - \" + state.siteConfig.title;\n dispatch(setSubtitle(title));\n };\n};\n\nexport const setOptionModal = (option: any) => {\n return {\n type: \"SET_OPTION_MODAL\",\n option: option,\n };\n};\n\nexport const openFileSelector = () => {\n return {\n type: \"OPEN_FILE_SELECTOR\",\n };\n};\n\nexport const openFolderSelector = () => {\n return {\n type: \"OPEN_FOLDER_SELECTOR\",\n };\n};\n\nexport const setPagination = (pagination) => {\n return {\n type: \"SET_PAGINATION\",\n pagination: pagination,\n };\n};\n\nexport const setShareInfo = (shareInfo) => {\n return {\n type: \"SET_SHARE_INFO\",\n shareInfo: shareInfo,\n };\n};\n\nexport const changePageSize = (\n size: number\n): ThunkAction => {\n return (dispatch, getState) => {\n const {\n explorer: { dirList, fileList },\n viewUpdate: { pagination },\n } = getState();\n const total = dirList.length + fileList.length;\n let page = pagination.page;\n if (pagination.page * size > total) {\n page = Math.max(Math.ceil(total / size), 1);\n } else if (size === -1) {\n page = 1;\n }\n Auth.SetPreference(\"pagination\", size);\n dispatch(\n setPagination({\n ...pagination,\n size: size,\n page: page,\n })\n );\n };\n};\n","import React from \"react\";\nimport { mediaType } from \"../../config\";\nimport ImageIcon from \"@material-ui/icons/PhotoSizeSelectActual\";\nimport VideoIcon from \"@material-ui/icons/Videocam\";\nimport AudioIcon from \"@material-ui/icons/Audiotrack\";\nimport PdfIcon from \"@material-ui/icons/PictureAsPdf\";\nimport {\n Android,\n FileExcelBox,\n FilePowerpointBox,\n FileWordBox,\n LanguageC,\n LanguageCpp,\n LanguageGo,\n LanguageJavascript,\n LanguagePhp,\n LanguagePython,\n MagnetOn,\n ScriptText,\n WindowRestore,\n ZipBox,\n} from \"mdi-material-ui\";\nimport FileShowIcon from \"@material-ui/icons/InsertDriveFile\";\nimport { lighten } from \"@material-ui/core/styles\";\nimport useTheme from \"@material-ui/core/styles/useTheme\";\nimport { Avatar } from \"@material-ui/core\";\nimport { MenuBook } from \"@material-ui/icons\";\n\nconst icons = {\n audio: {\n color: \"#651fff\",\n icon: AudioIcon,\n },\n video: {\n color: \"#d50000\",\n icon: VideoIcon,\n },\n image: {\n color: \"#d32f2f\",\n icon: ImageIcon,\n },\n pdf: {\n color: \"#f44336\",\n icon: PdfIcon,\n },\n word: {\n color: \"#538ce5\",\n icon: FileWordBox,\n },\n ppt: {\n color: \"rgb(239, 99, 63)\",\n icon: FilePowerpointBox,\n },\n excel: {\n color: \"#4caf50\",\n icon: FileExcelBox,\n },\n text: {\n color: \"#607d8b\",\n icon: ScriptText,\n },\n torrent: {\n color: \"#5c6bc0\",\n icon: MagnetOn,\n },\n zip: {\n color: \"#f9a825\",\n icon: ZipBox,\n },\n excute: {\n color: \"#1a237e\",\n icon: WindowRestore,\n },\n android: {\n color: \"#8bc34a\",\n icon: Android,\n },\n file: {\n color: \"#607d8b\",\n icon: FileShowIcon,\n },\n php: {\n color: \"#777bb3\",\n icon: LanguagePhp,\n },\n go: {\n color: \"#16b3da\",\n icon: LanguageGo,\n },\n python: {\n color: \"#3776ab\",\n icon: LanguagePython,\n },\n c: {\n color: \"#a8b9cc\",\n icon: LanguageC,\n },\n cpp: {\n color: \"#004482\",\n icon: LanguageCpp,\n },\n js: {\n color: \"#f4d003\",\n icon: LanguageJavascript,\n },\n epub: {\n color: \"#81b315\",\n icon: MenuBook,\n },\n};\n\nconst getColor = (theme, color) =>\n theme.palette.type === \"light\" ? color : lighten(color, 0.2);\n\nlet color;\n\nconst TypeIcon = (props) => {\n const theme = useTheme();\n\n const fileSuffix = props.fileName.split(\".\").pop().toLowerCase();\n let fileType = \"file\";\n Object.keys(mediaType).forEach((k) => {\n if (mediaType[k].indexOf(fileSuffix) !== -1) {\n fileType = k;\n }\n });\n const IconComponent = icons[fileType].icon;\n color = getColor(theme, icons[fileType].color);\n if (props.getColorValue) {\n props.getColorValue(color);\n }\n\n return (\n <>\n {props.isUpload && (\n \n \n \n )}\n {!props.isUpload && (\n \n )}\n \n );\n};\n\nexport default TypeIcon;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://bit.ly/CRA-PWA.\"\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (\n response.status === 404 ||\n (contentType != null &&\n contentType.indexOf(\"javascript\") === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n );\n });\n}\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://bit.ly/CRA-PWA\"\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","import React from \"react\";\nimport Auth from \"./Auth\";\nimport { Route, Redirect } from \"react-router-dom\";\n\nfunction AuthRoute({ children, ...rest }) {\n return (\n \n Auth.Check(rest.isLogin) ? (\n children\n ) : (\n \n )\n }\n />\n );\n}\n\nexport default AuthRoute;\n","import React from \"react\";\nimport Auth from \"./Auth\";\nimport { Route, Redirect } from \"react-router-dom\";\n\nfunction NoAuthRoute({ children, ...rest }) {\n return (\n \n !Auth.Check(rest.isLogin) ? (\n children\n ) : (\n \n )\n }\n />\n );\n}\n\nexport default NoAuthRoute;\n","import React from \"react\";\nimport { Facebook } from \"react-content-loader\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n loader: {\n width: \"80%\",\n [theme.breakpoints.up(\"md\")]: {\n width: \" 50%\",\n },\n\n marginTop: 30,\n },\n}));\n\nconst MyLoader = (props) => {\n return (\n \n );\n};\n\nfunction PageLoading() {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n \n \n \n );\n}\n\nexport default PageLoading;\n","import React from \"react\";\nimport SentimentVeryDissatisfiedIcon from \"@material-ui/icons/SentimentVeryDissatisfied\";\nimport { lighten, makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n fontSize: \"160px\",\n },\n emptyContainer: {\n bottom: \"0\",\n height: \"300px\",\n margin: \"50px auto\",\n width: \"300px\",\n color: lighten(theme.palette.text.disabled, 0.4),\n textAlign: \"center\",\n paddingTop: \"20px\",\n },\n emptyInfoBig: {\n fontSize: \"25px\",\n color: lighten(theme.palette.text.disabled, 0.4),\n },\n}));\n\nexport default function Notice(props) {\n const classes = useStyles();\n return (\n
\n \n
{props.msg}
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation } from \"react-router\";\nimport { makeStyles, Link } from \"@material-ui/core\";\nimport pageHelper from \"../../utils/page\";\n\nconst useStyles = makeStyles(() => ({\n icp: {\n padding: \"8px 24px\",\n position: \"absolute\",\n bottom: 0,\n },\n}));\n\nexport const ICPFooter = () => {\n const siteICPId = useSelector((state) => state.siteConfig.siteICPId);\n const classes = useStyles();\n const location = useLocation();\n const [show, setShow] = useState(true);\n\n useEffect(() => {\n // 只在分享和登录界面显示\n const isSharePage = pageHelper.isSharePage(location.pathname);\n const isLoginPage = pageHelper.isLoginPage(location.pathname);\n setShow(siteICPId && (isSharePage || isLoginPage));\n }, [siteICPId, location]);\n\n if (!show) {\n return <>;\n }\n return (\n
\n {`备案号: `}\n \n {siteICPId}\n \n
\n );\n};\n","import React from \"react\";\nimport ContentLoader from \"react-content-loader\";\n\nconst MyLoader = () => (\n \n \n \n);\n\nfunction captchaPlacholder() {\n return ;\n}\n\nexport default captchaPlacholder;\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport API from \"../middleware/Api\";\nimport { FormControl, Input, InputLabel } from \"@material-ui/core\";\nimport Placeholder from \"../component/Placeholder/Captcha\";\nimport { defaultValidate, useStyle } from \"./useCaptcha\";\nimport { toggleSnackbar } from \"../redux/explorer\";\n\nconst NormalCaptcha = forwardRef(function NormalCaptcha(\n { captchaRef, setLoading },\n ref\n) {\n const classes = useStyle();\n\n const [captcha, setCaptcha] = useState(\"\");\n const [captchaData, setCaptchaData] = useState(null);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const refreshCaptcha = () => {\n API.get(\"/site/captcha\")\n .then((response) => {\n setCaptchaData(response.data);\n setLoading(false);\n })\n .catch((error) => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"无法加载验证码:\" + error.message,\n \"error\"\n );\n });\n };\n\n useEffect(() => {\n ref.current = refreshCaptcha;\n refreshCaptcha();\n }, []);\n\n useEffect(() => {\n captchaRef.current.captchaCode = captcha;\n }, [captcha]);\n\n return (\n
\n \n 验证码\n setCaptcha(e.target.value)}\n type=\"text\"\n id=\"captcha\"\n value={captcha}\n autoComplete\n />\n {\" \"}\n
\n {captchaData === null && (\n
\n \n
\n )}\n {captchaData !== null && (\n \n )}\n
\n
\n );\n});\n\nexport default function useNormalCaptcha(captchaRefreshRef, setLoading) {\n const isValidate = useRef({\n isValidate: true,\n });\n\n const captchaParamsRef = useRef({\n captchaCode: \"\",\n });\n\n const CaptchaRender = useCallback(\n function Normal() {\n return (\n \n );\n },\n [captchaParamsRef, captchaRefreshRef, setLoading]\n );\n\n return {\n isValidate,\n validate: defaultValidate,\n captchaParamsRef,\n CaptchaRender,\n };\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport default class ReCAPTCHA extends React.Component {\n constructor() {\n super();\n this.handleExpired = this.handleExpired.bind(this);\n this.handleErrored = this.handleErrored.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleRecaptchaRef = this.handleRecaptchaRef.bind(this);\n }\n\n getValue() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this.props.grecaptcha.getResponse(this._widgetId);\n }\n return null;\n }\n\n getWidgetId() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this._widgetId;\n }\n return null;\n }\n\n execute() {\n const { grecaptcha } = this.props;\n\n if (grecaptcha && this._widgetId !== undefined) {\n return grecaptcha.execute(this._widgetId);\n } else {\n this._executeRequested = true;\n }\n }\n\n reset() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n this.props.grecaptcha.reset(this._widgetId);\n }\n }\n\n handleExpired() {\n if (this.props.onExpired) {\n this.props.onExpired();\n } else {\n this.handleChange(null);\n }\n }\n\n handleErrored() {\n if (this.props.onErrored) this.props.onErrored();\n }\n\n handleChange(token) {\n if (this.props.onChange) this.props.onChange(token);\n }\n\n explicitRender() {\n if (\n this.props.grecaptcha &&\n this.props.grecaptcha.render &&\n this._widgetId === undefined\n ) {\n const wrapper = document.createElement(\"div\");\n this._widgetId = this.props.grecaptcha.render(wrapper, {\n sitekey: this.props.sitekey,\n callback: this.handleChange,\n theme: this.props.theme,\n type: this.props.type,\n tabindex: this.props.tabindex,\n \"expired-callback\": this.handleExpired,\n \"error-callback\": this.handleErrored,\n size: this.props.size,\n stoken: this.props.stoken,\n hl: this.props.hl,\n badge: this.props.badge,\n });\n this.captcha.appendChild(wrapper);\n }\n if (\n this._executeRequested &&\n this.props.grecaptcha &&\n this._widgetId !== undefined\n ) {\n this._executeRequested = false;\n this.execute();\n }\n }\n\n componentDidMount() {\n this.explicitRender();\n }\n\n componentDidUpdate() {\n this.explicitRender();\n }\n\n componentWillUnmount() {\n if (this._widgetId !== undefined) {\n this.delayOfCaptchaIframeRemoving();\n this.reset();\n }\n }\n\n delayOfCaptchaIframeRemoving() {\n const temporaryNode = document.createElement(\"div\");\n document.body.appendChild(temporaryNode);\n temporaryNode.style.display = \"none\";\n\n // move of the recaptcha to a temporary node\n while (this.captcha.firstChild) {\n temporaryNode.appendChild(this.captcha.firstChild);\n }\n\n // delete the temporary node after reset will be done\n setTimeout(() => {\n document.body.removeChild(temporaryNode);\n }, 5000);\n }\n\n handleRecaptchaRef(elem) {\n this.captcha = elem;\n }\n\n render() {\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n /* eslint-disable no-unused-vars */\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n sitekey,\n onChange,\n theme,\n type,\n tabindex,\n onExpired,\n onErrored,\n size,\n stoken,\n grecaptcha,\n badge,\n hl,\n ...childProps\n } = this.props;\n /* eslint-enable no-unused-vars */\n return
;\n }\n}\n\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n sitekey: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n grecaptcha: PropTypes.object,\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\n type: PropTypes.oneOf([\"image\", \"audio\"]),\n tabindex: PropTypes.number,\n onExpired: PropTypes.func,\n onErrored: PropTypes.func,\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n stoken: PropTypes.string,\n hl: PropTypes.string,\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"]),\n};\nReCAPTCHA.defaultProps = {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onChange: () => {},\n theme: \"light\",\n type: \"image\",\n tabindex: 0,\n size: \"normal\",\n badge: \"bottomright\",\n};\n","import ReCAPTCHA from \"./ReCaptchaWrapper\";\nimport makeAsyncScriptLoader from \"react-async-script\";\n\nconst callbackName = \"onloadcallback\";\nconst globalName = \"grecaptcha\";\n\nfunction getURL() {\n const hostname = \"recaptcha.net\";\n return `https://${hostname}/recaptcha/api.js?onload=${callbackName}&render=explicit`;\n}\n\nexport default makeAsyncScriptLoader(getURL, {\n callbackName,\n globalName,\n})(ReCAPTCHA);\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { FormControl } from \"@material-ui/core\";\nimport ReCaptcha from \"../component/Login/ReCaptcha\";\nimport { defaultValidate, useStyle } from \"./useCaptcha\";\n\nconst Recaptcha = ({ captchaRef, setLoading }) => {\n const classes = useStyle();\n\n const [captcha, setCaptcha] = useState(\"\");\n\n const reCaptchaKey = useSelector(\n (state) => state.siteConfig.captcha_ReCaptchaKey\n );\n\n useEffect(() => {\n captchaRef.current.captchaCode = captcha;\n }, [captcha]);\n\n useEffect(() => setLoading(false), []);\n\n return (\n
\n \n
\n setCaptcha(value)}\n id=\"captcha\"\n name=\"captcha\"\n />\n
\n
{\" \"}\n
\n );\n};\n\nexport default function useRecaptcha(setLoading) {\n const isValidate = useRef({\n isValidate: true,\n });\n\n const captchaParamsRef = useRef({\n captchaCode: \"\",\n });\n\n const CaptchaRender = useCallback(\n function RecaptchaRender() {\n return (\n \n );\n },\n [captchaParamsRef, setLoading]\n );\n\n return {\n isValidate,\n validate: defaultValidate,\n captchaParamsRef,\n CaptchaRender,\n };\n}\n","import React, { forwardRef, useCallback, useRef } from \"react\";\nimport Script from \"react-load-script\";\nimport { useSelector } from \"react-redux\";\n\nconst TCaptcha = forwardRef(function TCaptcha(\n { captchaRef, setLoading, isValidateRef, submitRef },\n ref\n) {\n const appid = useSelector(\n (state) => state.siteConfig.tcaptcha_captcha_app_id\n );\n const onLoad = () => {\n try {\n ref.current = new window.TencentCaptcha(appid, function (res) {\n if (res.ret === 0) {\n captchaRef.current.ticket = res.ticket;\n captchaRef.current.randstr = res.randstr;\n\n isValidateRef.current.isValidate = true;\n submitRef.current.submit();\n console.log(submitRef);\n } else {\n submitRef.current.setLoading(false);\n }\n });\n } catch (e) {\n console.error(e);\n }\n setLoading(false);\n };\n return (\n \n );\n});\n\nexport default function useTCaptcha(setLoading) {\n const isValidate = useRef({\n isValidate: false,\n });\n const captchaParamsRef = useRef({\n ticket: \"\",\n randstr: \"\",\n });\n const submitRef = useRef({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n submit: () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setLoading: () => {},\n });\n\n const captchaRef = useRef();\n\n const CaptchaRender = useCallback(\n function TCaptchaRender() {\n return (\n \n );\n },\n [captchaParamsRef, setLoading, isValidate, submitRef, captchaRef]\n );\n\n return {\n isValidate: isValidate,\n validate: (submit, setLoading) => {\n submitRef.current.submit = submit;\n submitRef.current.setLoading = setLoading;\n captchaRef.current.show();\n },\n captchaParamsRef,\n CaptchaRender,\n };\n}\n","import { useSelector } from \"react-redux\";\nimport { useRef, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport useNormalCaptcha from \"./normal\";\nimport useRecaptcha from \"./recaptcha\";\nimport useTCaptcha from \"./tcaptcha\";\n\nexport const useStyle = makeStyles((theme) => ({\n captchaContainer: {\n display: \"flex\",\n marginTop: \"10px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"block\",\n },\n },\n}));\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function\nexport const defaultValidate = (submit, setLoading) => {};\n\nexport const useCaptcha = () => {\n const captchaType = useSelector((state) => state.siteConfig.captcha_type);\n\n const [captchaLoading, setCaptchaLoading] = useState(true);\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n const captchaRefreshRef = useRef(() => {});\n\n const normal = useNormalCaptcha(captchaRefreshRef, setCaptchaLoading);\n const recaptcha = useRecaptcha(setCaptchaLoading);\n const tcaptcha = useTCaptcha(setCaptchaLoading);\n\n switch (captchaType) {\n case \"normal\":\n return { ...normal, captchaRefreshRef, captchaLoading };\n case \"recaptcha\":\n return { ...recaptcha, captchaRefreshRef, captchaLoading };\n case \"tcaptcha\":\n return { ...tcaptcha, captchaRefreshRef, captchaLoading };\n default:\n return { ...normal, captchaRefreshRef, captchaLoading };\n }\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport LockOutlinedIcon from \"@material-ui/icons/LockOutlined\";\nimport {\n Avatar,\n Button,\n Divider,\n FormControl,\n Input,\n InputLabel,\n Link,\n makeStyles,\n Paper,\n Typography,\n} from \"@material-ui/core\";\nimport { useHistory } from \"react-router-dom\";\nimport API from \"../../middleware/Api\";\nimport Auth from \"../../middleware/Auth\";\nimport { bufferDecode, bufferEncode } from \"../../utils/index\";\nimport { Fingerprint, VpnKey } from \"@material-ui/icons\";\nimport VpnIcon from \"@material-ui/icons/VpnKeyOutlined\";\nimport { useLocation } from \"react-router\";\nimport { ICPFooter } from \"../Common/ICPFooter\";\nimport { useCaptcha } from \"../../hooks/useCaptcha\";\nimport { applyThemes, setSessionStatus, toggleSnackbar } from \"../../redux/explorer\";\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"110px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(\"sm\")]: {\n width: 400,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 110,\n },\n paper: {\n marginTop: theme.spacing(8),\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: `${theme.spacing(2)}px ${theme.spacing(3)}px ${theme.spacing(\n 3\n )}px`,\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.secondary.main,\n },\n form: {\n width: \"100%\", // Fix IE 11 issue.\n marginTop: theme.spacing(1),\n },\n submit: {\n marginTop: theme.spacing(3),\n },\n link: {\n marginTop: \"20px\",\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"space-between\",\n },\n captchaContainer: {\n display: \"flex\",\n marginTop: \"10px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"block\",\n },\n },\n captchaPlaceholder: {\n width: 200,\n },\n buttonContainer: {\n display: \"flex\",\n },\n authnLink: {\n textAlign: \"center\",\n marginTop: 16,\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nfunction LoginForm() {\n const [email, setEmail] = useState(\"\");\n const [pwd, setPwd] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [useAuthn, setUseAuthn] = useState(false);\n const [twoFA, setTwoFA] = useState(false);\n const [faCode, setFACode] = useState(\"\");\n\n const loginCaptcha = useSelector((state) => state.siteConfig.loginCaptcha);\n const registerEnabled = useSelector((state) => state.siteConfig.registerEnabled);\n const title = useSelector((state) => state.siteConfig.title);\n const QQLogin = useSelector((state) => state.siteConfig.QQLogin);\n const authn = useSelector((state) => state.siteConfig.authn);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const ApplyThemes = useCallback((theme) => dispatch(applyThemes(theme)), [\n dispatch,\n ]);\n const SetSessionStatus = useCallback(\n (status) => dispatch(setSessionStatus(status)),\n [dispatch]\n );\n\n const history = useHistory();\n const location = useLocation();\n const {\n captchaLoading,\n isValidate,\n validate,\n CaptchaRender,\n captchaRefreshRef,\n captchaParamsRef,\n } = useCaptcha();\n const query = useQuery();\n\n const classes = useStyles();\n\n useEffect(() => {\n setEmail(query.get(\"username\"));\n }, [location]);\n\n const afterLogin = (data) => {\n Auth.authenticate(data);\n\n // 设置用户主题色\n if (data[\"preferred_theme\"] !== \"\") {\n ApplyThemes(data[\"preferred_theme\"]);\n }\n\n // 设置登录状态\n SetSessionStatus(true);\n\n history.push(\"/home\");\n ToggleSnackbar(\"top\", \"right\", \"登录成功\", \"success\");\n\n localStorage.removeItem(\"siteConfigCache\");\n };\n\n const authnLogin = (e) => {\n e.preventDefault();\n if (!navigator.credentials) {\n ToggleSnackbar(\"top\", \"right\", \"当前浏览器或环境不支持\", \"warning\");\n\n return;\n }\n\n setLoading(true);\n\n API.get(\"/user/authn/\" + email)\n .then((response) => {\n const credentialRequestOptions = response.data;\n console.log(credentialRequestOptions);\n credentialRequestOptions.publicKey.challenge = bufferDecode(\n credentialRequestOptions.publicKey.challenge\n );\n credentialRequestOptions.publicKey.allowCredentials.forEach(\n function (listItem) {\n listItem.id = bufferDecode(listItem.id);\n }\n );\n\n return navigator.credentials.get({\n publicKey: credentialRequestOptions.publicKey,\n });\n })\n .then((assertion) => {\n const authData = assertion.response.authenticatorData;\n const clientDataJSON = assertion.response.clientDataJSON;\n const rawId = assertion.rawId;\n const sig = assertion.response.signature;\n const userHandle = assertion.response.userHandle;\n\n return API.post(\n \"/user/authn/finish/\" + email,\n JSON.stringify({\n id: assertion.id,\n rawId: bufferEncode(rawId),\n type: assertion.type,\n response: {\n authenticatorData: bufferEncode(authData),\n clientDataJSON: bufferEncode(clientDataJSON),\n signature: bufferEncode(sig),\n userHandle: bufferEncode(userHandle),\n },\n })\n );\n })\n .then((response) => {\n afterLogin(response.data);\n })\n .catch((error) => {\n console.log(error);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n })\n .then(() => {\n setLoading(false);\n });\n };\n\n const login = (e) => {\n e.preventDefault();\n setLoading(true);\n if (!isValidate.current.isValidate && loginCaptcha) {\n validate(() => login(e), setLoading);\n return;\n }\n API.post(\"/user/session\", {\n userName: email,\n Password: pwd,\n ...captchaParamsRef.current,\n })\n .then((response) => {\n setLoading(false);\n if (response.rawData.code === 203) {\n setTwoFA(true);\n } else {\n afterLogin(response.data);\n }\n })\n .catch((error) => {\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n captchaRefreshRef.current();\n });\n };\n\n const initQQLogin = () => {\n setLoading(true);\n API.post(\"/user/qq\")\n .then((response) => {\n window.location.href = response.data;\n })\n .catch((error) => {\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n });\n };\n\n const twoFALogin = (e) => {\n e.preventDefault();\n setLoading(true);\n API.post(\"/user/2fa\", {\n code: faCode,\n })\n .then((response) => {\n setLoading(false);\n afterLogin(response.data);\n })\n .catch((error) => {\n setLoading(false);\n ToggleSnackbar(\"top\", \"right\", error.message, \"warning\");\n });\n };\n\n return (\n
\n {!twoFA && (\n <>\n \n \n \n \n \n 登录 {title}\n \n {!useAuthn && (\n
\n \n \n 电子邮箱\n \n \n setEmail(e.target.value)\n }\n autoComplete\n value={email}\n autoFocus\n />\n \n \n \n 密码\n \n setPwd(e.target.value)}\n type=\"password\"\n id=\"password\"\n value={pwd}\n autoComplete\n />\n \n {loginCaptcha && }\n {QQLogin && (\n
\n \n 登录\n \n \n 使用QQ登录\n \n
\n )}\n {!QQLogin && (\n \n 登录\n \n )}\n \n )}\n {useAuthn && (\n
\n \n \n 电子邮箱\n \n \n setEmail(e.target.value)\n }\n autoComplete\n value={email}\n autoFocus\n />\n \n \n 下一步\n \n \n )}\n \n
\n
\n 忘记密码\n
\n
\n 使用说明\n
\n
\n 你应该使用论坛账号登录.\n
\n\n
\n\n \n
\n\n {authn && (\n
\n setUseAuthn(!useAuthn)}\n >\n {!useAuthn && (\n <>\n \n 使用外部验证器登录\n \n )}\n {useAuthn && (\n <>\n \n 使用密码登录\n \n )}\n \n
\n )}\n \n )}\n {twoFA && (\n \n \n \n \n \n 二步验证\n \n
\n \n \n 请输入六位二步验证代码\n \n \n setFACode(event.target.value)\n }\n autoComplete\n value={faCode}\n autoFocus\n />\n \n \n 继续登录\n {\" \"}\n {\" \"}\n \n
\n )}\n
\n );\n}\n\nexport default LoginForm;\n","import React, { useEffect } from \"react\";\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\nimport { Button } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { useDrop } from \"react-dnd\";\nimport classNames from \"classnames\";\nimport MoreIcon from \"@material-ui/icons/MoreHoriz\";\n\nconst useStyles = makeStyles((theme) => ({\n expandMore: {\n color: \"#8d8d8d\",\n },\n active: {\n boxShadow: \"0 0 0 2px \" + theme.palette.primary.light,\n },\n button: {\n textTransform: \"none\",\n },\n}));\n\nexport default function PathButton(props) {\n const inputRef = React.useRef(null);\n\n const [{ canDrop, isOver }, drop] = useDrop({\n accept: \"object\",\n drop: () => {\n if (props.more) {\n inputRef.current.click();\n } else {\n return {\n folder: {\n id: -1,\n path: props.path,\n name: props.folder === \"/\" ? \"\" : props.folder,\n },\n };\n }\n },\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n });\n\n const isActive = canDrop && isOver;\n\n useEffect(() => {\n if (props.more && isActive) {\n inputRef.current.click();\n }\n // eslint-disable-next-line\n }, [isActive]);\n\n const classes = useStyles();\n return (\n \n \n {props.more && }\n {!props.more && (\n <>\n {props.folder}\n {props.last && (\n \n )}\n \n )}\n \n \n );\n}\n","import React, { useEffect } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport { MenuItem, ListItemIcon, ListItemText } from \"@material-ui/core\";\nimport { useDrop } from \"react-dnd\";\nimport classNames from \"classnames\";\n\nconst useStyles = makeStyles((theme) => ({\n active: {\n border: \"2px solid \" + theme.palette.primary.light,\n },\n}));\n\nexport default function DropDownItem(props) {\n const [{ canDrop, isOver }, drop] = useDrop({\n accept: \"object\",\n drop: () => {\n console.log({\n folder: {\n id: -1,\n path: props.path,\n name: props.folder === \"/\" ? \"\" : props.folder,\n },\n });\n },\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n });\n\n const isActive = canDrop && isOver;\n\n useEffect(() => {\n props.setActiveStatus(props.id, isActive);\n // eslint-disable-next-line\n }, [isActive]);\n\n const classes = useStyles();\n return (\n props.navigateTo(e, props.id)}\n >\n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport DropDownItem from \"./DropDownItem\";\n\nexport default function DropDown(props) {\n let timer;\n let first = props.folders.length;\n const status = [];\n for (let index = 0; index < props.folders.length; index++) {\n status[index] = false;\n }\n\n const setActiveStatus = (id, value) => {\n status[id] = value;\n if (value) {\n clearTimeout(timer);\n } else {\n let shouldClose = true;\n status.forEach((element) => {\n if (element) {\n shouldClose = false;\n }\n });\n if (shouldClose) {\n if (first <= 0) {\n timer = setTimeout(() => {\n props.onClose();\n }, 100);\n } else {\n first--;\n }\n }\n }\n console.log(status);\n };\n\n return (\n <>\n {props.folders.map((folder, id) => (\n // eslint-disable-next-line react/jsx-key\n \n ))}\n \n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport RightIcon from \"@material-ui/icons/KeyboardArrowRight\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport NewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport explorer, {\n drawerToggleAction,\n navigateTo,\n navigateUp,\n openCompressDialog,\n openCreateFileDialog,\n openCreateFolderDialog,\n openShareDialog,\n refreshFileList,\n setNavigatorError,\n setNavigatorLoadingStatus,\n setSelectedTarget,\n} from \"../../../redux/explorer\";\nimport { fixUrlHash, setGetParameter } from \"../../../utils/index\";\nimport {\n Divider,\n ListItemIcon,\n Menu,\n MenuItem,\n withStyles,\n} from \"@material-ui/core\";\nimport PathButton from \"./PathButton\";\nimport DropDown from \"./DropDown\";\nimport pathHelper from \"../../../utils/page\";\nimport classNames from \"classnames\";\nimport Auth from \"../../../middleware/Auth\";\nimport { Archive } from \"@material-ui/icons\";\nimport { FilePlus } from \"mdi-material-ui\";\nimport SubActions from \"./SubActions\";\nimport { setCurrentPolicy } from \"../../../redux/explorer/action\";\nimport { list } from \"../../../services/navigate\";\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n refresh: state.navigator.refresh,\n drawerDesktopOpen: state.viewUpdate.open,\n viewMethod: state.viewUpdate.explorerViewMethod,\n search: state.explorer.search,\n sortMethod: state.viewUpdate.sortMethod,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n navigateToPath: (path) => {\n dispatch(navigateTo(path));\n },\n navigateUp: () => {\n dispatch(navigateUp());\n },\n setNavigatorError: (status, msg) => {\n dispatch(setNavigatorError(status, msg));\n },\n updateFileList: (list) => {\n dispatch(explorer.actions.updateFileList(list));\n },\n setNavigatorLoadingStatus: (status) => {\n dispatch(setNavigatorLoadingStatus(status));\n },\n refreshFileList: () => {\n dispatch(refreshFileList());\n },\n setSelectedTarget: (target) => {\n dispatch(setSelectedTarget(target));\n },\n openCreateFolderDialog: () => {\n dispatch(openCreateFolderDialog());\n },\n openCreateFileDialog: () => {\n dispatch(openCreateFileDialog());\n },\n openShareDialog: () => {\n dispatch(openShareDialog());\n },\n handleDesktopToggle: (open) => {\n dispatch(drawerToggleAction(open));\n },\n openCompressDialog: () => {\n dispatch(openCompressDialog());\n },\n setCurrentPolicy: (policy) => {\n dispatch(setCurrentPolicy(policy));\n },\n };\n};\n\nconst delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst styles = (theme) => ({\n container: {\n [theme.breakpoints.down(\"xs\")]: {\n display: \"none\",\n },\n backgroundColor: theme.palette.background.paper,\n },\n navigatorContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n nav: {\n height: \"48px\",\n padding: \"5px 15px\",\n display: \"flex\",\n },\n optionContainer: {\n paddingTop: \"6px\",\n marginRight: \"10px\",\n },\n rightIcon: {\n marginTop: \"6px\",\n verticalAlign: \"top\",\n color: \"#868686\",\n },\n expandMore: {\n color: \"#8d8d8d\",\n },\n roundBorder: {\n borderRadius: \"4px 4px 0 0\",\n },\n});\n\nclass NavigatorComponent extends Component {\n search = undefined;\n currentID = 0;\n\n state = {\n hidden: false,\n hiddenFolders: [],\n folders: [],\n anchorEl: null,\n hiddenMode: false,\n anchorHidden: null,\n };\n\n constructor(props) {\n super(props);\n this.element = React.createRef();\n }\n\n componentDidMount = () => {\n const url = new URL(fixUrlHash(window.location.href));\n const c = url.searchParams.get(\"path\");\n this.renderPath(c === null ? \"/\" : c);\n\n if (!this.props.isShare) {\n // 如果是在个人文件管理页,首次加载时打开侧边栏\n this.props.handleDesktopToggle(true);\n }\n\n // 后退操作时重新导航\n window.onpopstate = () => {\n const url = new URL(fixUrlHash(window.location.href));\n const c = url.searchParams.get(\"path\");\n if (c !== null) {\n this.props.navigateToPath(c);\n }\n };\n };\n\n renderPath = (path = null) => {\n this.props.setNavigatorError(false, null);\n this.setState({\n folders:\n path !== null\n ? path.substr(1).split(\"/\")\n : this.props.path.substr(1).split(\"/\"),\n });\n const newPath = path !== null ? path : this.props.path;\n list(\n newPath,\n this.props.share,\n this.search ? this.search.keywords : \"\",\n this.search ? this.search.searchPath : \"\"\n )\n .then((response) => {\n this.currentID = response.data.parent;\n this.props.updateFileList(response.data.objects);\n this.props.setNavigatorLoadingStatus(false);\n if (!this.search) {\n setGetParameter(\"path\", encodeURIComponent(newPath));\n }\n if (response.data.policy) {\n this.props.setCurrentPolicy({\n id: response.data.policy.id,\n name: response.data.policy.name,\n type: response.data.policy.type,\n maxSize: response.data.policy.max_size,\n allowedSuffix: response.data.policy.file_type,\n });\n }\n })\n .catch((error) => {\n this.props.setNavigatorError(true, error);\n });\n\n this.checkOverFlow(true);\n };\n\n redresh = (path) => {\n this.props.setNavigatorLoadingStatus(true);\n this.props.setNavigatorError(false, \"error\");\n this.renderPath(path);\n };\n\n UNSAFE_componentWillReceiveProps = (nextProps) => {\n if (this.props.search !== nextProps.search) {\n this.search = nextProps.search;\n }\n if (this.props.path !== nextProps.path) {\n this.renderPath(nextProps.path);\n }\n if (this.props.refresh !== nextProps.refresh) {\n this.redresh(nextProps.path);\n }\n };\n\n componentWillUnmount() {\n this.props.updateFileList([]);\n }\n\n componentDidUpdate = (prevProps, prevStates) => {\n if (this.state.folders !== prevStates.folders) {\n this.checkOverFlow(true);\n }\n if (this.props.drawerDesktopOpen !== prevProps.drawerDesktopOpen) {\n delay(500).then(() => this.checkOverFlow());\n }\n };\n\n checkOverFlow = (force) => {\n if (this.overflowInitLock && !force) {\n return;\n }\n if (this.element.current !== null) {\n const hasOverflowingChildren =\n this.element.current.offsetHeight <\n this.element.current.scrollHeight ||\n this.element.current.offsetWidth <\n this.element.current.scrollWidth;\n if (hasOverflowingChildren) {\n this.overflowInitLock = true;\n this.setState({ hiddenMode: true });\n }\n if (!hasOverflowingChildren && this.state.hiddenMode) {\n this.setState({ hiddenMode: false });\n }\n }\n };\n\n navigateTo = (event, id) => {\n if (id === this.state.folders.length - 1) {\n //最后一个路径\n this.setState({ anchorEl: event.currentTarget });\n } else if (\n id === -1 &&\n this.state.folders.length === 1 &&\n this.state.folders[0] === \"\"\n ) {\n this.props.refreshFileList();\n this.handleClose();\n } else if (id === -1) {\n this.props.navigateToPath(\"/\");\n this.handleClose();\n } else {\n this.props.navigateToPath(\n \"/\" + this.state.folders.slice(0, id + 1).join(\"/\")\n );\n this.handleClose();\n }\n };\n\n handleClose = () => {\n this.setState({ anchorEl: null, anchorHidden: null, anchorSort: null });\n };\n\n showHiddenPath = (e) => {\n this.setState({ anchorHidden: e.currentTarget });\n };\n\n performAction = (e) => {\n this.handleClose();\n if (e === \"refresh\") {\n this.redresh();\n return;\n }\n const presentPath = this.props.path.split(\"/\");\n const newTarget = [\n {\n id: this.currentID,\n type: \"dir\",\n name: presentPath.pop(),\n path: presentPath.length === 1 ? \"/\" : presentPath.join(\"/\"),\n },\n ];\n //this.props.navitateUp();\n switch (e) {\n case \"share\":\n this.props.setSelectedTarget(newTarget);\n this.props.openShareDialog();\n break;\n case \"newfolder\":\n this.props.openCreateFolderDialog();\n break;\n case \"compress\":\n this.props.setSelectedTarget(newTarget);\n this.props.openCompressDialog();\n break;\n case \"newFile\":\n this.props.openCreateFileDialog();\n break;\n default:\n break;\n }\n };\n\n render() {\n const { classes } = this.props;\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n const user = Auth.GetUser();\n\n const presentFolderMenu = (\n \n this.performAction(\"refresh\")}>\n \n \n \n 刷新\n \n {!this.props.search && isHomePage && (\n
\n \n this.performAction(\"share\")}>\n \n \n \n 分享\n \n {user.group.compress && (\n this.performAction(\"compress\")}\n >\n \n \n \n 压缩\n \n )}\n \n this.performAction(\"newfolder\")}\n >\n \n \n \n 创建文件夹\n \n\n this.performAction(\"newFile\")}>\n \n \n \n 创建文件\n \n
\n )}\n \n );\n\n return (\n \n
\n
\n \n this.navigateTo(e, -1)}\n />\n \n \n {this.state.hiddenMode && (\n \n \n \n \n \n \n {/* */}\n \n this.navigateTo(\n e,\n this.state.folders.length - 1\n )\n }\n />\n {presentFolderMenu}\n \n )}\n {!this.state.hiddenMode &&\n this.state.folders.map((folder, id, folders) => (\n \n {folder !== \"\" && (\n \n \n this.navigateTo(e, id)\n }\n />\n {id === folders.length - 1 &&\n presentFolderMenu}\n {id !== folders.length - 1 && (\n \n )}\n \n )}\n \n ))}\n
\n
\n \n
\n
\n \n
\n );\n }\n}\n\nNavigatorComponent.propTypes = {\n classes: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n};\n\nconst Navigator = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(NavigatorComponent)));\n\nexport default Navigator;\n","import Highlighter from \"react-highlight-words\";\nimport { trimPrefix } from \"../Uploader/core/utils\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n highlight: {\n backgroundColor: theme.palette.warning.light,\n },\n}));\n\nexport default function FileName({ name }) {\n const classes = useStyles();\n const search = useSelector((state) => state.explorer.search);\n if (!search) {\n return name;\n }\n\n return (\n \n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport classNames from \"classnames\";\nimport {\n ButtonBase,\n fade,\n Tooltip,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport TypeIcon from \"./TypeIcon\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\nimport Grow from \"@material-ui/core/Grow\";\nimport { Folder } from \"@material-ui/icons\";\nimport FileName from \"./FileName\";\n\nconst styles = (theme) => ({\n container: {\n padding: \"7px\",\n },\n\n selected: {\n \"&:hover\": {\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: fade(\n theme.palette.primary.main,\n theme.palette.type === \"dark\" ? 0.3 : 0.18\n ),\n },\n notSelected: {\n \"&:hover\": {\n backgroundColor: theme.palette.background.default,\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: theme.palette.background.paper,\n },\n\n button: {\n height: \"50px\",\n border: \"1px solid \" + theme.palette.divider,\n width: \"100%\",\n borderRadius: \"6px\",\n boxSizing: \"border-box\",\n transition:\n \"background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms\",\n display: \"flex\",\n justifyContent: \"left\",\n alignItems: \"initial\",\n },\n icon: {\n margin: \"10px 10px 10px 16px\",\n height: \"30px\",\n minWidth: \"30px\",\n backgroundColor: theme.palette.background.paper,\n borderRadius: \"90%\",\n paddingTop: \"3px\",\n color: theme.palette.text.secondary,\n },\n folderNameSelected: {\n color:\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\n fontWeight: \"500\",\n },\n folderNameNotSelected: {\n color: theme.palette.text.secondary,\n },\n folderName: {\n marginTop: \"15px\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n marginRight: \"20px\",\n },\n checkIcon: {\n color: theme.palette.primary.main,\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n selected: state.explorer.selected,\n };\n};\n\nconst mapDispatchToProps = () => {\n return {};\n};\n\nclass SmallIconCompoment extends Component {\n state = {};\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n const isSelectedCurrent =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isSelectedNext =\n nextProps.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n if (\n nextProps.selected !== this.props.selected &&\n isSelectedCurrent === isSelectedNext\n ) {\n return false;\n }\n\n return true;\n }\n\n render() {\n const { classes } = this.props;\n const isSelected =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n\n return (\n \n \n {!isSelected && (\n <>\n {this.props.isFolder && }\n {!this.props.isFolder && (\n \n )}\n \n )}\n {isSelected && (\n \n \n \n )}\n \n \n \n \n \n \n \n );\n }\n}\n\nSmallIconCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n file: PropTypes.object.isRequired,\n};\n\nconst SmallIcon = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(SmallIconCompoment));\n\nexport default SmallIcon;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport classNames from \"classnames\";\nimport { LazyLoadImage } from \"react-lazy-load-image-component\";\nimport ContentLoader from \"react-content-loader\";\nimport { baseURL } from \"../../middleware/Api\";\nimport {\n ButtonBase,\n Divider,\n fade,\n Tooltip,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport TypeIcon from \"./TypeIcon\";\nimport { withRouter } from \"react-router\";\nimport pathHelper from \"../../utils/page\";\nimport statusHelper from \"../../utils/page\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\nimport Grow from \"@material-ui/core/Grow\";\nimport FileName from \"./FileName\";\n\nconst styles = (theme) => ({\n container: {},\n\n selected: {\n \"&:hover\": {\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: fade(\n theme.palette.primary.main,\n theme.palette.type === \"dark\" ? 0.3 : 0.18\n ),\n },\n\n notSelected: {\n \"&:hover\": {\n backgroundColor: theme.palette.background.default,\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: theme.palette.background.paper,\n },\n\n button: {\n border: \"1px solid \" + theme.palette.divider,\n width: \"100%\",\n borderRadius: \"6px\",\n boxSizing: \"border-box\",\n transition:\n \"background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms\",\n alignItems: \"initial\",\n display: \"initial\",\n },\n folderNameSelected: {\n color:\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\n fontWeight: \"500\",\n },\n folderNameNotSelected: {\n color: theme.palette.text.secondary,\n },\n folderName: {\n marginTop: \"15px\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n marginRight: \"20px\",\n },\n preview: {\n overflow: \"hidden\",\n height: \"150px\",\n width: \"100%\",\n borderRadius: \"6px 6px 0 0\",\n backgroundColor: theme.palette.background.default,\n },\n previewIcon: {\n overflow: \"hidden\",\n height: \"149px\",\n width: \"100%\",\n borderRadius: \"5px 5px 0 0\",\n backgroundColor: theme.palette.background.paper,\n paddingTop: \"50px\",\n },\n iconBig: {\n fontSize: 50,\n },\n picPreview: {\n objectFit: \"cover\",\n width: \"100%\",\n height: \"100%\",\n },\n fileInfo: {\n height: \"50px\",\n display: \"flex\",\n },\n icon: {\n margin: \"10px 10px 10px 16px\",\n height: \"30px\",\n minWidth: \"30px\",\n backgroundColor: theme.palette.background.paper,\n borderRadius: \"90%\",\n paddingTop: \"3px\",\n color: theme.palette.text.secondary,\n },\n hide: {\n display: \"none\",\n },\n loadingAnimation: {\n borderRadius: \"6px 6px 0 0\",\n height: \"100%\",\n width: \"100%\",\n },\n shareFix: {\n marginLeft: \"20px\",\n },\n checkIcon: {\n color: theme.palette.primary.main,\n },\n noDrag: {\n userDrag: \"none\",\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n selected: state.explorer.selected,\n shareInfo: state.viewUpdate.shareInfo,\n };\n};\n\nconst mapDispatchToProps = () => {\n return {};\n};\n\nclass FileIconCompoment extends Component {\n static defaultProps = {\n share: false,\n };\n\n state = {\n loading: false,\n showPicIcon: false,\n };\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n const isSelectedCurrent =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isSelectedNext =\n nextProps.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n if (\n nextProps.selected !== this.props.selected &&\n isSelectedCurrent === isSelectedNext\n ) {\n return false;\n }\n\n return true;\n }\n\n render() {\n const { classes } = this.props;\n const isSelected =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isSharePage = pathHelper.isSharePage(\n this.props.location.pathname\n );\n const isMobile = statusHelper.isMobile();\n\n return (\n
\n \n {this.props.file.pic !== \"\" &&\n !this.state.showPicIcon &&\n this.props.file.pic !== \" \" &&\n this.props.file.pic !== \"null,null\" && (\n
\n \n this.setState({ loading: false })\n }\n beforeLoad={() =>\n this.setState({ loading: true })\n }\n onError={() =>\n this.setState({ showPicIcon: true })\n }\n />\n \n \n \n
\n )}\n {(this.props.file.pic === \"\" ||\n this.state.showPicIcon ||\n this.props.file.pic === \" \" ||\n this.props.file.pic === \"null,null\") && (\n
\n \n
\n )}\n {(this.props.file.pic === \"\" ||\n this.state.showPicIcon ||\n this.props.file.pic === \" \" ||\n this.props.file.pic === \"null,null\") && }\n
\n {!this.props.share && (\n \n {!isSelected && (\n \n )}\n {isSelected && (\n \n \n \n )}\n
\n )}\n \n \n \n \n \n
\n \n \n );\n }\n}\n\nFileIconCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n file: PropTypes.object.isRequired,\n};\n\nconst FileIcon = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(FileIconCompoment)));\n\nexport default FileIcon;\n","import React from \"react\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport classNames from \"classnames\";\nimport {\n ButtonBase,\n fade,\n makeStyles,\n Tooltip,\n Typography,\n} from \"@material-ui/core\";\nimport { useSelector } from \"react-redux\";\nimport statusHelper from \"../../utils/page\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n padding: \"7px\",\n },\n\n selected: {\n \"&:hover\": {\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: fade(\n theme.palette.primary.main,\n theme.palette.type === \"dark\" ? 0.3 : 0.18\n ),\n },\n\n notSelected: {\n \"&:hover\": {\n backgroundColor: theme.palette.background.default,\n border: \"1px solid #d0d0d0\",\n },\n backgroundColor: theme.palette.background.paper,\n },\n\n button: {\n height: \"50px\",\n border: \"1px solid \" + theme.palette.divider,\n width: \"100%\",\n borderRadius: \"6px\",\n boxSizing: \"border-box\",\n transition:\n \"background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms\",\n display: \"flex\",\n justifyContent: \"left\",\n alignItems: \"initial\",\n },\n icon: {\n margin: \"10px 10px 10px 16px\",\n height: \"30px\",\n minWidth: \"30px\",\n backgroundColor: theme.palette.background.paper,\n borderRadius: \"90%\",\n paddingTop: \"3px\",\n color: theme.palette.text.secondary,\n },\n folderNameSelected: {\n color:\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\n fontWeight: \"500\",\n },\n folderNameNotSelected: {\n color: theme.palette.text.secondary,\n },\n folderName: {\n marginTop: \"15px\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n marginRight: \"20px\",\n },\n active: {\n boxShadow: \"0 0 0 2px \" + theme.palette.primary.light,\n },\n checkIcon: {\n color: theme.palette.primary.main,\n },\n}));\n\nexport default function Folder({ folder, isActive, onIconClick }) {\n const selected = useSelector((state) => state.explorer.selected);\n const classes = useStyles();\n const isMobile = statusHelper.isMobile();\n const isSelected =\n selected.findIndex((value) => {\n return value === folder;\n }) !== -1;\n\n return (\n \n \n {!isSelected && }\n {isSelected && (\n \n )}\n \n \n \n {folder.name}\n \n \n \n );\n}\n","import React from \"react\";\nimport SmallIcon from \"../SmallIcon\";\nimport FileIcon from \"../FileIcon\";\nimport { useSelector } from \"react-redux\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Folder from \"../Folder\";\n\nconst useStyles = makeStyles(() => ({\n dragging: {\n width: \"200px\",\n },\n cardDragged: {\n position: \"absolute\",\n \"transform-origin\": \"bottom left\",\n },\n}));\n\nconst diliverIcon = (object, viewMethod, classes) => {\n if (object.type === \"dir\") {\n return (\n
\n \n
\n );\n }\n if (object.type === \"file\" && viewMethod === \"icon\") {\n return (\n
\n \n
\n );\n }\n if (\n (object.type === \"file\" && viewMethod === \"smallIcon\") ||\n viewMethod === \"list\"\n ) {\n return (\n
\n \n
\n );\n }\n};\n\nconst Preview = (props) => {\n const selected = useSelector((state) => state.explorer.selected);\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n const classes = useStyles();\n return (\n <>\n {selected.length === 0 &&\n diliverIcon(props.object, viewMethod, classes)}\n {selected.length > 0 && (\n <>\n {selected.slice(0, 3).map((card, i) => (\n \n {diliverIcon(card, viewMethod, classes)}\n \n ))}\n \n )}\n \n );\n};\nexport default Preview;\n","import React, { useMemo } from \"react\";\nimport { useDragLayer } from \"react-dnd\";\nimport Preview from \"./Preview\";\nimport { useSelector } from \"react-redux\";\n\nconst layerStyles = {\n position: \"fixed\",\n pointerEvents: \"none\",\n zIndex: 100,\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n};\n\nfunction getItemStyles(\n initialOffset,\n currentOffset,\n pointerOffset,\n viewMethod\n) {\n if (!initialOffset || !currentOffset) {\n return {\n display: \"none\",\n };\n }\n let { x, y } = currentOffset;\n if (viewMethod === \"list\") {\n x += pointerOffset.x - initialOffset.x;\n y += pointerOffset.y - initialOffset.y;\n }\n\n const transform = `translate(${x}px, ${y}px)`;\n return {\n opacity: 0.5,\n transform,\n WebkitTransform: transform,\n };\n}\nconst CustomDragLayer = (props) => {\n const {\n itemType,\n isDragging,\n item,\n initialOffset,\n currentOffset,\n pointerOffset,\n } = useDragLayer((monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n pointerOffset: monitor.getInitialClientOffset(),\n isDragging: monitor.isDragging(),\n }));\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n const image = useMemo(() => {\n switch (itemType) {\n case \"object\":\n return ;\n default:\n return null;\n }\n }, [itemType, item]);\n if (!isDragging) {\n return null;\n }\n return (\n
\n \n {image}\n
\n \n );\n};\nexport default CustomDragLayer;\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\n\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport classNames from \"classnames\";\nimport { sizeToString } from \"../../utils/index\";\nimport {\n fade,\n TableCell,\n TableRow,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport TypeIcon from \"./TypeIcon\";\nimport pathHelper from \"../../utils/page\";\nimport statusHelper from \"../../utils/page\";\nimport { withRouter } from \"react-router\";\nimport KeyboardReturnIcon from \"@material-ui/icons/KeyboardReturn\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\nimport Grow from \"@material-ui/core/Grow\";\nimport { formatLocalTime } from \"../../utils/datetime\";\nimport FileName from \"./FileName\";\n\nconst styles = (theme) => ({\n selected: {\n \"&:hover\": {},\n backgroundColor: fade(theme.palette.primary.main, 0.18),\n },\n\n selectedShared: {\n \"&:hover\": {},\n backgroundColor: fade(theme.palette.primary.main, 0.18),\n },\n\n notSelected: {\n \"&:hover\": {\n backgroundColor: theme.palette.action.hover,\n },\n },\n icon: {\n verticalAlign: \"middle\",\n marginRight: \"20px\",\n color: theme.palette.text.secondary,\n },\n tableIcon: {\n marginRight: \"20px\",\n verticalAlign: \"middle\",\n },\n folderNameSelected: {\n color:\n theme.palette.type === \"dark\" ? \"#fff\" : theme.palette.primary.dark,\n fontWeight: \"500\",\n userSelect: \"none\",\n },\n folderNameNotSelected: {\n color: theme.palette.text.secondary,\n userSelect: \"none\",\n },\n folderName: {\n marginRight: \"20px\",\n display: \"flex\",\n alignItems: \"center\",\n },\n hideAuto: {\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n tableRow: {\n padding: \"10px 16px\",\n },\n checkIcon: {\n color: theme.palette.primary.main,\n },\n active: {\n backgroundColor: fade(theme.palette.primary.main, 0.1),\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n selected: state.explorer.selected,\n };\n};\n\nconst mapDispatchToProps = () => {\n return {};\n};\n\nclass TableRowCompoment extends Component {\n state = {};\n\n shouldComponentUpdate(nextProps, nextState, nextContext) {\n const isSelectedCurrent =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isSelectedNext =\n nextProps.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n if (\n nextProps.selected !== this.props.selected &&\n isSelectedCurrent === isSelectedNext\n ) {\n return false;\n }\n\n return true;\n }\n\n render() {\n const { classes } = this.props;\n const isShare = pathHelper.isSharePage(this.props.location.pathname);\n\n let icon;\n if (this.props.file.type === \"dir\") {\n icon = ;\n } else if (this.props.file.type === \"up\") {\n icon = ;\n } else {\n icon = (\n \n );\n }\n const isSelected =\n this.props.selected.findIndex((value) => {\n return value === this.props.file;\n }) !== -1;\n const isMobile = statusHelper.isMobile();\n\n return (\n \n \n \n \n {!isSelected && icon}\n {isSelected && (\n \n \n \n )}\n \n \n \n \n \n \n {\" \"}\n {this.props.file.type !== \"dir\" &&\n this.props.file.type !== \"up\" &&\n sizeToString(this.props.file.size)}\n \n \n \n \n {\" \"}\n {formatLocalTime(\n this.props.file.date,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n \n );\n }\n}\n\nTableRowCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n file: PropTypes.object.isRequired,\n};\n\nconst TableItem = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(TableRowCompoment)));\n\nexport default TableItem;\n","import React from \"react\";\nimport { useDrop } from \"react-dnd\";\nimport Folder from \"../Folder\";\nimport classNames from \"classnames\";\nimport TableItem from \"../TableRow\";\nexport default function FolderDropWarpper({\n isListView,\n folder,\n onIconClick,\n contextMenu,\n handleClick,\n handleDoubleClick,\n className,\n pref,\n}) {\n const [{ canDrop, isOver }, drop] = useDrop({\n accept: \"object\",\n drop: () => ({ folder }),\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n });\n const isActive = canDrop && isOver;\n if (!isListView) {\n return (\n
\n \n
\n );\n }\n return (\n \n );\n}\n","import { useRef } from \"react\";\nimport { throttle } from \"lodash\";\n\nconst useDragScrolling = () => {\n const isScrolling = useRef(false);\n const target = document.querySelector(\"#explorer-container\");\n\n const goDown = () => {\n target.scrollTop += 10;\n\n const { offsetHeight, scrollTop, scrollHeight } = target;\n const isScrollEnd = offsetHeight + scrollTop >= scrollHeight;\n\n if (isScrolling.current && !isScrollEnd) {\n window.requestAnimationFrame(goDown);\n }\n };\n\n const goUp = () => {\n target.scrollTop -= 10;\n\n if (isScrolling.current && target.scrollTop > 0) {\n window.requestAnimationFrame(goUp);\n }\n };\n\n const onDragOver = (event) => {\n const isMouseOnTop = event.clientY < 100;\n const isMouseOnDown = window.innerHeight - event.clientY < 100;\n\n if (!isScrolling.current && (isMouseOnTop || isMouseOnDown)) {\n isScrolling.current = true;\n\n if (isMouseOnTop) {\n window.requestAnimationFrame(goUp);\n }\n\n if (isMouseOnDown) {\n window.requestAnimationFrame(goDown);\n }\n } else if (!isMouseOnTop && !isMouseOnDown) {\n isScrolling.current = false;\n }\n };\n\n const throttleOnDragOver = throttle(onDragOver, 300);\n\n const addEventListenerForWindow = () => {\n window.addEventListener(\"dragover\", throttleOnDragOver, false);\n };\n\n const removeEventListenerForWindow = () => {\n window.removeEventListener(\"dragover\", throttleOnDragOver, false);\n isScrolling.current = false;\n };\n\n return {\n addEventListenerForWindow,\n removeEventListenerForWindow,\n };\n};\n\nexport default useDragScrolling;\n","import React, { useCallback, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport statusHelper from \"../../utils/page\";\nimport FileIcon from \"./FileIcon\";\nimport SmallIcon from \"./SmallIcon\";\nimport TableItem from \"./TableRow\";\nimport classNames from \"classnames\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { useDrag } from \"react-dnd\";\nimport { getEmptyImage } from \"react-dnd-html5-backend\";\nimport DropWarpper from \"./DnD/DropWarpper\";\nimport { useLocation } from \"react-router-dom\";\nimport { pathBack } from \"../../utils\";\nimport {\n changeContextMenu,\n dragAndDrop,\n navigateTo,\n openLoadingDialog,\n openPreview,\n selectFile,\n setSelectedTarget,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport useDragScrolling from \"./DnD/Scrolling\";\n\nconst useStyles = makeStyles(() => ({\n container: {\n padding: \"7px\",\n },\n fixFlex: {\n minWidth: 0,\n },\n dragging: {\n opacity: 0.4,\n },\n}));\n\nexport default function ObjectIcon(props) {\n const path = useSelector((state) => state.navigator.path);\n const shareInfo = useSelector((state) => state.viewUpdate.shareInfo);\n const selected = useSelector((state) => state.explorer.selected);\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n const navigatorPath = useSelector((state) => state.navigator.path);\n const location = useLocation();\n\n const dispatch = useDispatch();\n const ContextMenu = useCallback(\n (type, open) => dispatch(changeContextMenu(type, open)),\n [dispatch]\n );\n const SetSelectedTarget = useCallback(\n (targets) => dispatch(setSelectedTarget(targets)),\n [dispatch]\n );\n\n const NavitateTo = useCallback((targets) => dispatch(navigateTo(targets)), [\n dispatch,\n ]);\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const DragAndDrop = useCallback(\n (source, target) => dispatch(dragAndDrop(source, target)),\n [dispatch]\n );\n const OpenLoadingDialog = useCallback(\n (text) => dispatch(openLoadingDialog(text)),\n [dispatch]\n );\n const OpenPreview = useCallback((share) => dispatch(openPreview(share)), [\n dispatch,\n ]);\n const StartDownload = useCallback(\n (share, file) => dispatch(StartDownload(share, file)),\n [dispatch]\n );\n\n const classes = useStyles();\n\n const contextMenu = (e) => {\n if (props.file.type === \"up\") {\n return;\n }\n e.preventDefault();\n if (\n selected.findIndex((value) => {\n return value === props.file;\n }) === -1\n ) {\n SetSelectedTarget([props.file]);\n }\n ContextMenu(\"file\", true);\n };\n\n const SelectFile = (e) => {\n dispatch(selectFile(props.file, e, props.index));\n };\n const enterFolder = () => {\n NavitateTo(\n path === \"/\" ? path + props.file.name : path + \"/\" + props.file.name\n );\n };\n const handleClick = (e) => {\n if (props.file.type === \"up\") {\n NavitateTo(pathBack(navigatorPath));\n return;\n }\n\n SelectFile(e);\n if (\n props.file.type === \"dir\" &&\n !e.ctrlKey &&\n !e.metaKey &&\n !e.shiftKey\n ) {\n enterFolder();\n }\n };\n\n const handleDoubleClick = () => {\n if (props.file.type === \"up\") {\n return;\n }\n if (props.file.type === \"dir\") {\n enterFolder();\n return;\n }\n\n OpenPreview(shareInfo);\n };\n\n const handleIconClick = (e) => {\n e.stopPropagation();\n if (!e.shiftKey) {\n e.ctrlKey = true;\n }\n SelectFile(e);\n return false;\n };\n\n const {\n addEventListenerForWindow,\n removeEventListenerForWindow,\n } = useDragScrolling();\n\n const [{ isDragging }, drag, preview] = useDrag({\n item: {\n object: props.file,\n type: \"object\",\n selected: [...selected],\n viewMethod: viewMethod,\n },\n begin: () => {\n addEventListenerForWindow();\n },\n end: (item, monitor) => {\n removeEventListenerForWindow();\n const dropResult = monitor.getDropResult();\n if (item && dropResult) {\n if (dropResult.folder) {\n if (\n item.object.id !== dropResult.folder.id ||\n item.object.type !== dropResult.folder.type\n ) {\n DragAndDrop(item.object, dropResult.folder);\n }\n }\n }\n },\n canDrag: () => {\n return (\n !statusHelper.isMobile() &&\n statusHelper.isHomePage(location.pathname)\n );\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n useEffect(() => {\n preview(getEmptyImage(), { captureDraggingState: true });\n // eslint-disable-next-line\n }, []);\n\n if (viewMethod === \"list\") {\n return (\n <>\n {props.file.type === \"dir\" && (\n \n )}\n {props.file.type !== \"dir\" && (\n \n )}\n \n );\n }\n\n return (\n \n \n {props.file.type === \"dir\" && viewMethod !== \"list\" && (\n \n )}\n {props.file.type === \"file\" && viewMethod === \"icon\" && (\n \n )}\n {props.file.type === \"file\" && viewMethod === \"smallIcon\" && (\n \n )}\n \n \n );\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport { isCompressFile, isPreviewable, isTorrent } from \"../../config\";\nimport UploadIcon from \"@material-ui/icons/CloudUpload\";\nimport DownloadIcon from \"@material-ui/icons/CloudDownload\";\nimport NewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\nimport OpenFolderIcon from \"@material-ui/icons/FolderOpen\";\nimport FileCopyIcon from \"@material-ui/icons/FileCopy\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport RenameIcon from \"@material-ui/icons/BorderColor\";\nimport MoveIcon from \"@material-ui/icons/Input\";\nimport LinkIcon from \"@material-ui/icons/InsertLink\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport { FilePlus, FolderUpload, MagnetOn, Transfer } from \"mdi-material-ui\";\nimport {\n Divider,\n ListItemIcon,\n MenuItem,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport pathHelper from \"../../utils/page\";\nimport { withRouter } from \"react-router-dom\";\nimport Auth from \"../../middleware/Auth\";\nimport { Archive, InfoOutlined, Unarchive } from \"@material-ui/icons\";\nimport Menu from \"@material-ui/core/Menu\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport {\n batchGetSource,\n openPreview,\n setSelectedTarget,\n startBatchDownload,\n startDownload,\n toggleObjectInfoSidebar,\n} from \"../../redux/explorer/action\";\nimport {\n changeContextMenu,\n navigateTo,\n openCompressDialog,\n openCopyDialog,\n openCreateFileDialog,\n openCreateFolderDialog,\n openDecompressDialog,\n openLoadingDialog,\n openMoveDialog,\n openMusicDialog,\n openRelocateDialog,\n openRemoteDownloadDialog,\n openRemoveDialog,\n openRenameDialog,\n openShareDialog,\n openTorrentDownloadDialog,\n refreshFileList,\n setNavigatorLoadingStatus,\n showImgPreivew,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { pathJoin } from \"../Uploader/core/utils\";\nimport {\n openFileSelector,\n openFolderSelector,\n} from \"../../redux/viewUpdate/action\";\n\nconst styles = () => ({\n propover: {},\n divider: {\n marginTop: 4,\n marginBottom: 4,\n },\n});\n\nconst StyledListItemIcon = withStyles({\n root: {\n minWidth: 38,\n },\n})(ListItemIcon);\n\nconst mapStateToProps = (state) => {\n return {\n menuType: state.viewUpdate.contextType,\n menuOpen: state.viewUpdate.contextOpen,\n isMultiple: state.explorer.selectProps.isMultiple,\n withFolder: state.explorer.selectProps.withFolder,\n withFile: state.explorer.selectProps.withFile,\n withSourceEnabled: state.explorer.selectProps.withSourceEnabled,\n path: state.navigator.path,\n selected: state.explorer.selected,\n search: state.explorer.search,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n changeContextMenu: (type, open) => {\n dispatch(changeContextMenu(type, open));\n },\n setNavigatorLoadingStatus: (status) => {\n dispatch(setNavigatorLoadingStatus(status));\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n navigateTo: (path) => {\n dispatch(navigateTo(path));\n },\n openCreateFolderDialog: () => {\n dispatch(openCreateFolderDialog());\n },\n openCreateFileDialog: () => {\n dispatch(openCreateFileDialog());\n },\n openRenameDialog: () => {\n dispatch(openRenameDialog());\n },\n openMoveDialog: () => {\n dispatch(openMoveDialog());\n },\n openRemoveDialog: () => {\n dispatch(openRemoveDialog());\n },\n openShareDialog: () => {\n dispatch(openShareDialog());\n },\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n openMusicDialog: () => {\n dispatch(openMusicDialog());\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n openRemoteDownloadDialog: () => {\n dispatch(openRemoteDownloadDialog());\n },\n openTorrentDownloadDialog: () => {\n dispatch(openTorrentDownloadDialog());\n },\n openCopyDialog: () => {\n dispatch(openCopyDialog());\n },\n openLoadingDialog: (text) => {\n dispatch(openLoadingDialog(text));\n },\n openDecompressDialog: () => {\n dispatch(openDecompressDialog());\n },\n openCompressDialog: () => {\n dispatch(openCompressDialog());\n },\n refreshFileList: () => {\n dispatch(refreshFileList());\n },\n openRelocateDialog: () => {\n dispatch(openRelocateDialog());\n },\n openPreview: (share) => {\n dispatch(openPreview(share));\n },\n toggleObjectInfoSidebar: (open) => {\n dispatch(toggleObjectInfoSidebar(open));\n },\n startBatchDownload: (share) => {\n dispatch(startBatchDownload(share));\n },\n openFileSelector: () => {\n dispatch(openFileSelector());\n },\n openFolderSelector: () => {\n dispatch(openFolderSelector());\n },\n startDownload: (share, file) => {\n dispatch(startDownload(share, file));\n },\n batchGetSource: () => {\n dispatch(batchGetSource());\n },\n };\n};\n\nclass ContextMenuCompoment extends Component {\n X = 0;\n Y = 0;\n\n state = {};\n\n componentDidMount = () => {\n window.document.addEventListener(\"mousemove\", this.setPoint);\n };\n\n setPoint = (e) => {\n this.Y = e.clientY;\n this.X = e.clientX;\n };\n\n openArchiveDownload = () => {\n this.props.startBatchDownload(this.props.share);\n };\n\n openDownload = () => {\n this.props.startDownload(this.props.share, this.props.selected[0]);\n };\n\n enterFolder = () => {\n this.props.navigateTo(\n pathJoin([this.props.path, this.props.selected[0].name])\n );\n };\n\n // 暂时只对空白处右键菜单使用这个函数,疑似有bug会导致的一个菜单被默认选中。\n // 相关issue: https://github.com/mui-org/material-ui/issues/23747\n renderMenuItems = (items) => {\n const res = [];\n let key = 0;\n\n [\"top\", \"center\", \"bottom\"].forEach((position) => {\n let visibleCount = 0;\n items[position].forEach((item) => {\n if (item.condition) {\n res.push(\n \n {item.icon}\n \n {item.text}\n \n \n );\n key++;\n visibleCount++;\n }\n });\n if (visibleCount > 0 && position != \"bottom\") {\n res.push(\n \n );\n key++;\n }\n });\n\n return res;\n };\n\n render() {\n const { classes } = this.props;\n const user = Auth.GetUser();\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n const emptyMenuList = {\n top: [\n {\n condition: true,\n onClick: () => {\n this.props.refreshFileList();\n this.props.changeContextMenu(\n this.props.menuType,\n false\n );\n },\n icon: ,\n text: \"刷新\",\n },\n ],\n center: [\n {\n condition: true,\n onClick: () => this.props.openFileSelector(),\n icon: ,\n text: \"上传文件\",\n },\n {\n condition: true,\n onClick: () => this.props.openFolderSelector(),\n icon: ,\n text: \"上传目录\",\n },\n {\n condition: user.group.allowRemoteDownload,\n onClick: () => this.props.openRemoteDownloadDialog(),\n icon: ,\n text: \"离线下载\",\n },\n ],\n bottom: [\n {\n condition: true,\n onClick: () => this.props.openCreateFolderDialog(),\n icon: ,\n text: \"创建文件夹\",\n },\n {\n condition: true,\n onClick: () => this.props.openCreateFileDialog(),\n icon: ,\n text: \"创建文件\",\n },\n ],\n };\n\n return (\n
\n \n this.props.changeContextMenu(this.props.menuType, false)\n }\n anchorReference=\"anchorPosition\"\n anchorPosition={{ top: this.Y, left: this.X }}\n anchorOrigin={{\n vertical: \"top\",\n horizontal: \"left\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"left\",\n }}\n >\n {this.props.menuType === \"empty\" && (\n
\n {\n this.props.refreshFileList();\n this.props.changeContextMenu(\n this.props.menuType,\n false\n );\n }}\n >\n \n \n \n 刷新\n \n \n this.props.openFileSelector()}\n >\n \n \n \n \n 上传文件\n \n \n this.props.openFolderSelector()}\n >\n \n \n \n \n 上传目录\n \n \n {user.group.allowRemoteDownload && (\n \n this.props.openRemoteDownloadDialog()\n }\n >\n \n \n \n \n 离线下载\n \n \n )}\n\n \n \n this.props.openCreateFolderDialog()\n }\n >\n \n \n \n \n 创建文件夹\n \n \n \n this.props.openCreateFileDialog()\n }\n >\n \n \n \n \n 创建文件\n \n \n
\n )}\n {this.props.menuType !== \"empty\" && (\n
\n {!this.props.isMultiple && this.props.withFolder && (\n
\n \n \n \n \n \n 进入\n \n \n {isHomePage && (\n \n )}\n
\n )}\n {!this.props.isMultiple &&\n this.props.withFile &&\n (!this.props.share ||\n this.props.share.preview) &&\n isPreviewable(this.props.selected[0].name) && (\n
\n \n this.props.openPreview()\n }\n >\n \n \n \n \n 打开\n \n \n
\n )}\n\n {!this.props.isMultiple && this.props.withFile && (\n
\n \n this.openDownload(this.props.share)\n }\n >\n \n \n \n \n 下载\n \n \n {isHomePage && (\n \n )}\n
\n )}\n\n {(this.props.isMultiple ||\n this.props.withFolder) && (\n this.openArchiveDownload()}\n >\n \n \n \n \n 打包下载\n \n \n )}\n\n {isHomePage &&\n user.group.sourceBatch > 0 &&\n this.props.withSourceEnabled && (\n \n this.props.batchGetSource()\n }\n >\n \n \n \n \n {this.props.isMultiple ||\n (this.props.withFolder &&\n !this.props.withFile)\n ? \"批量获取外链\"\n : \"获取外链\"}\n \n \n )}\n\n {!this.props.isMultiple &&\n isHomePage &&\n user.group.allowRemoteDownload &&\n this.props.withFile &&\n isTorrent(this.props.selected[0].name) && (\n \n this.props.openTorrentDownloadDialog()\n }\n >\n \n \n \n \n 创建离线下载任务\n \n \n )}\n {!this.props.isMultiple &&\n isHomePage &&\n user.group.compress &&\n this.props.withFile &&\n isCompressFile(this.props.selected[0].name) && (\n \n this.props.openDecompressDialog()\n }\n >\n \n \n \n \n 解压缩\n \n \n )}\n\n {isHomePage && user.group.compress && (\n \n this.props.openCompressDialog()\n }\n >\n \n \n \n \n 创建压缩文件\n \n \n )}\n\n {isHomePage && user.group.relocate && (\n \n this.props.openRelocateDialog()\n }\n >\n \n \n \n \n 转移存储策略\n \n \n )}\n\n {!this.props.isMultiple && isHomePage && (\n this.props.openShareDialog()}\n >\n \n \n \n \n 创建分享链接\n \n \n )}\n\n {!this.props.isMultiple && isHomePage && (\n \n this.props.toggleObjectInfoSidebar(true)\n }\n >\n \n \n \n \n 详细信息\n \n \n )}\n\n {!this.props.isMultiple && isHomePage && (\n \n )}\n\n {!this.props.isMultiple && isHomePage && (\n
\n \n this.props.openRenameDialog()\n }\n >\n \n \n \n \n 重命名\n \n \n {!this.props.search && (\n \n this.props.openCopyDialog()\n }\n >\n \n \n \n \n 复制\n \n \n )}\n
\n )}\n {isHomePage && (\n
\n {!this.props.search && (\n \n this.props.openMoveDialog()\n }\n >\n \n \n \n \n 移动\n \n \n )}\n\n \n \n this.props.openRemoveDialog()\n }\n >\n \n \n \n \n 删除\n \n \n
\n )}\n
\n )}\n \n
\n );\n }\n}\n\nContextMenuCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n menuType: PropTypes.string.isRequired,\n};\n\nconst ContextMenu = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(ContextMenuCompoment)));\n\nexport default ContextMenu;\n","import React, { useCallback, useEffect, useMemo } from \"react\";\nimport explorer, {\n changeContextMenu,\n openRemoveDialog,\n setSelectedTarget,\n} from \"../../redux/explorer\";\nimport ObjectIcon from \"./ObjectIcon\";\nimport ContextMenu from \"./ContextMenu\";\nimport classNames from \"classnames\";\nimport ImgPreivew from \"./ImgPreview\";\nimport pathHelper from \"../../utils/page\";\nimport { isMac } from \"../../utils\";\nimport {\n CircularProgress,\n Grid,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n} from \"@material-ui/core\";\nimport { configure, GlobalHotKeys } from \"react-hotkeys\";\nimport TableSortLabel from \"@material-ui/core/TableSortLabel\";\nimport Nothing from \"../Placeholder/Nothing\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useLocation } from \"react-router\";\nimport { usePagination } from \"../../hooks/pagination\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n padding: theme.spacing(2),\n textAlign: \"center\",\n color: theme.palette.text.secondary,\n margin: \"10px\",\n },\n root: {\n padding: \"10px\",\n [theme.breakpoints.up(\"sm\")]: {\n height: \"calc(100vh - 113px)\",\n },\n },\n rootTable: {\n padding: \"0px\",\n backgroundColor: theme.palette.background.paper.white,\n [theme.breakpoints.up(\"sm\")]: {\n height: \"calc(100vh - 113px)\",\n },\n },\n typeHeader: {\n margin: \"10px 25px\",\n color: \"#6b6b6b\",\n fontWeight: \"500\",\n },\n loading: {\n justifyContent: \"center\",\n display: \"flex\",\n marginTop: \"40px\",\n },\n errorBox: {\n padding: theme.spacing(4),\n },\n errorMsg: {\n marginTop: \"10px\",\n },\n hideAuto: {\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n flexFix: {\n minWidth: 0,\n },\n upButton: {\n marginLeft: \"20px\",\n marginTop: \"10px\",\n marginBottom: \"10px\",\n },\n clickAway: {\n height: \"100%\",\n width: \"100%\",\n },\n rootShare: {\n height: \"100%\",\n minHeight: 500,\n },\n visuallyHidden: {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: 1,\n margin: -1,\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n top: 20,\n width: 1,\n },\n gridContainer: {\n [theme.breakpoints.down(\"sm\")]: {\n gridTemplateColumns:\n \"repeat(auto-fill,minmax(180px,1fr))!important\",\n },\n [theme.breakpoints.up(\"md\")]: {\n gridTemplateColumns:\n \"repeat(auto-fill,minmax(220px,1fr))!important\",\n },\n display: \"grid!important\",\n },\n gridItem: {\n flex: \"1 1 220px!important\",\n },\n}));\n\nconst keyMap = {\n DELETE_FILE: \"del\",\n SELECT_ALL_SHOWED: `${isMac() ? \"command\" : \"ctrl\"}+a`,\n SELECT_ALL: `${isMac() ? \"command\" : \"ctrl\"}+shift+a`,\n DESELECT_ALL: \"esc\",\n};\n\nexport default function Explorer({ share }) {\n const location = useLocation();\n const dispatch = useDispatch();\n const selected = useSelector((state) => state.explorer.selected);\n const search = useSelector((state) => state.explorer.search);\n const loading = useSelector((state) => state.viewUpdate.navigatorLoading);\n const path = useSelector((state) => state.navigator.path);\n const sortMethod = useSelector((state) => state.viewUpdate.sortMethod);\n const navigatorErrorMsg = useSelector(\n (state) => state.viewUpdate.navigatorErrorMsg\n );\n const navigatorError = useSelector(\n (state) => state.viewUpdate.navigatorError\n );\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\n\n const OpenRemoveDialog = useCallback(() => dispatch(openRemoveDialog()), [\n dispatch,\n ]);\n const SetSelectedTarget = useCallback(\n (targets) => dispatch(setSelectedTarget(targets)),\n [dispatch]\n );\n const ChangeContextMenu = useCallback(\n (type, open) => dispatch(changeContextMenu(type, open)),\n [dispatch]\n );\n const ChangeSortMethod = useCallback(\n (method) => dispatch(explorer.actions.changeSortMethod(method)),\n [dispatch]\n );\n const SelectAll = useCallback(\n () => dispatch(explorer.actions.selectAll()),\n [dispatch]\n );\n\n const { dirList, fileList, startIndex } = usePagination();\n\n const handlers = {\n DELETE_FILE: () => {\n if (selected.length > 0 && !share) {\n OpenRemoveDialog();\n }\n },\n SELECT_ALL_SHOWED: (e) => {\n e.preventDefault();\n if (selected.length >= dirList.length + fileList.length) {\n SetSelectedTarget([]);\n } else {\n SetSelectedTarget([...dirList, ...fileList]);\n }\n },\n SELECT_ALL: (e) => {\n e.preventDefault();\n SelectAll();\n },\n DESELECT_ALL: (e) => {\n e.preventDefault();\n SetSelectedTarget([]);\n },\n };\n\n useEffect(\n () =>\n configure({\n ignoreTags: [\"input\", \"select\", \"textarea\"],\n }),\n []\n );\n\n const contextMenu = (e) => {\n e.preventDefault();\n if (!search && !pathHelper.isSharePage(location.pathname)) {\n if (!loading) {\n ChangeContextMenu(\"empty\", true);\n }\n }\n };\n\n const ClickAway = (e) => {\n const element = e.target;\n if (element.dataset.clickaway) {\n SetSelectedTarget([]);\n }\n };\n\n const classes = useStyles();\n const isHomePage = pathHelper.isHomePage(location.pathname);\n\n const showView =\n !loading && (dirList.length !== 0 || fileList.length !== 0);\n\n const listView = useMemo(\n () => (\n \n \n \n \n {\n ChangeSortMethod(\n sortMethod === \"namePos\"\n ? \"nameRev\"\n : \"namePos\"\n );\n }}\n >\n 名称\n {sortMethod === \"namePos\" ||\n sortMethod === \"nameRev\" ? (\n \n {sortMethod === \"nameRev\"\n ? \"sorted descending\"\n : \"sorted ascending\"}\n \n ) : null}\n \n \n \n {\n ChangeSortMethod(\n sortMethod === \"sizePos\"\n ? \"sizeRes\"\n : \"sizePos\"\n );\n }}\n >\n 大小\n {sortMethod === \"sizePos\" ||\n sortMethod === \"sizeRes\" ? (\n \n {sortMethod === \"sizeRes\"\n ? \"sorted descending\"\n : \"sorted ascending\"}\n \n ) : null}\n \n \n \n {\n ChangeSortMethod(\n sortMethod === \"modifyTimePos\"\n ? \"modifyTimeRev\"\n : \"modifyTimePos\"\n );\n }}\n >\n 修改日期\n {sortMethod === \"modifyTimePos\" ||\n sortMethod === \"modifyTimeRev\" ? (\n \n {sortMethod === \"sizeRes\"\n ? \"sorted descending\"\n : \"sorted ascending\"}\n \n ) : null}\n \n \n \n \n \n {pathHelper.isMobile() && path !== \"/\" && (\n \n )}\n {dirList.map((value, index) => (\n \n ))}\n {fileList.map((value, index) => (\n \n ))}\n \n
\n ),\n [dirList, fileList, path, sortMethod, ChangeSortMethod]\n );\n\n const normalView = useMemo(\n () => (\n
\n {dirList.length !== 0 && (\n <>\n \n 文件夹\n \n \n {dirList.map((value, index) => (\n \n \n \n ))}\n \n \n )}\n {fileList.length !== 0 && (\n <>\n \n 文件\n \n \n {fileList.map((value, index) => (\n \n \n \n ))}\n \n \n )}\n
\n ),\n [dirList, fileList, classes]\n );\n\n const view = viewMethod === \"list\" ? listView : normalView;\n\n return (\n \n \n \n \n {navigatorError && (\n \n \n :( 请求时出现错误\n \n \n {navigatorErrorMsg.message}\n \n \n )}\n\n {loading && !navigatorError && (\n
\n \n
\n )}\n\n {!search &&\n isHomePage &&\n dirList.length === 0 &&\n fileList.length === 0 &&\n !loading &&\n !navigatorError && (\n \n )}\n {((search &&\n dirList.length === 0 &&\n fileList.length === 0 &&\n !loading &&\n !navigatorError) ||\n (dirList.length === 0 &&\n fileList.length === 0 &&\n !loading &&\n !navigatorError &&\n !isHomePage)) && }\n {showView && view}\n \n );\n}\n","import React, { useMemo } from \"react\";\nimport { useSelector } from \"react-redux\";\n\nconst paginate = (array, page_size, page_number) =>\n page_size === -1\n ? array\n : array.slice((page_number - 1) * page_size, page_number * page_size);\n\nexport function usePagination() {\n const files = useSelector((state) => state.explorer.fileList);\n const folders = useSelector((state) => state.explorer.dirList);\n const pagination = useSelector((state) => state.viewUpdate.pagination);\n\n const { dirList, fileList, startIndex } = useMemo(() => {\n const all = paginate(\n [...folders, ...files],\n pagination.size,\n pagination.page\n );\n const dirList = [];\n const fileList = [];\n all.forEach((v) =>\n v.type === \"dir\" ? dirList.push(v) : fileList.push(v)\n );\n const startIndex = pagination.size * (pagination.page - 1);\n return { dirList, fileList, startIndex };\n }, [folders, files, pagination]);\n return { dirList, fileList, startIndex };\n}\n","import React from \"react\";\nimport { BulletList } from \"react-content-loader\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n loader: {\n width: \"100%\",\n // padding: 40,\n // [theme.breakpoints.down(\"md\")]: {\n // width: \"100%\",\n // padding: 10\n // }\n },\n}));\n\nconst MyLoader = (props) => (\n \n);\n\nfunction ListLoading() {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n\nexport default ListLoading;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Drawer from \"@material-ui/core/Drawer\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport { Clear, Folder } from \"@material-ui/icons\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { setSideBar } from \"../../../redux/explorer/action\";\nimport TypeIcon from \"../TypeIcon\";\nimport Typography from \"@material-ui/core/Typography\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Grid from \"@material-ui/core/Grid\";\nimport API from \"../../../middleware/Api\";\nimport { filename, sizeToString } from \"../../../utils\";\nimport Link from \"@material-ui/core/Link\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport TimeAgo from \"timeago-react\";\nimport ListLoading from \"../../Placeholder/ListLoading\";\nimport Hidden from \"@material-ui/core/Hidden\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Slide from \"@material-ui/core/Slide\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport { formatLocalTime } from \"../../../utils/datetime\";\nimport { navigateTo, toggleSnackbar } from \"../../../redux/explorer\";\n\nconst drawerWidth = 350;\n\nconst useStyles = makeStyles((theme) => ({\n drawer: {\n width: drawerWidth,\n flexShrink: 0,\n },\n drawerPaper: {\n width: drawerWidth,\n boxShadow:\n \"0px 8px 10px -5px rgb(0 0 0 / 20%), 0px 16px 24px 2px rgb(0 0 0 / 14%), 0px 6px 30px 5px rgb(0 0 0 / 12%)\",\n },\n drawerContainer: {\n overflow: \"auto\",\n },\n header: {\n display: \"flex\",\n padding: theme.spacing(3),\n placeContent: \"space-between\",\n },\n fileIcon: { width: 33, height: 33 },\n fileIconSVG: { fontSize: 20 },\n folderIcon: {\n color: theme.palette.text.secondary,\n width: 33,\n height: 33,\n },\n fileName: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n wordBreak: \"break-all\",\n flexGrow: 2,\n },\n closeIcon: {\n placeSelf: \"flex-start\",\n marginTop: 2,\n },\n propsContainer: {\n padding: theme.spacing(3),\n },\n propsLabel: {\n color: theme.palette.text.secondary,\n padding: theme.spacing(1),\n },\n propsTime: {\n color: theme.palette.text.disabled,\n padding: theme.spacing(1),\n },\n propsValue: {\n padding: theme.spacing(1),\n wordBreak: \"break-all\",\n },\n appBar: {\n position: \"relative\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});\n\nexport default function SideDrawer() {\n const dispatch = useDispatch();\n const sideBarOpen = useSelector((state) => state.explorer.sideBarOpen);\n const selected = useSelector((state) => state.explorer.selected);\n const SetSideBar = useCallback((open) => dispatch(setSideBar(open)), [\n dispatch,\n ]);\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const NavigateTo = useCallback((k) => dispatch(navigateTo(k)), [dispatch]);\n const search = useSelector((state) => state.explorer.search);\n const [target, setTarget] = useState(null);\n const [details, setDetails] = useState(null);\n const loadProps = (object) => {\n API.get(\n \"/object/property/\" +\n object.id +\n \"?trace_root=\" +\n (search ? \"true\" : \"false\") +\n \"&is_folder=\" +\n (object.type === \"dir\").toString()\n )\n .then((response) => {\n setDetails(response.data);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n useEffect(() => {\n setDetails(null);\n if (sideBarOpen) {\n if (selected.length !== 1) {\n SetSideBar(false);\n } else {\n setTarget(selected[0]);\n loadProps(selected[0]);\n }\n }\n }, [selected, sideBarOpen]);\n\n const classes = useStyles();\n const propsItem = [\n {\n label: \"大小\",\n value: (d, t) =>\n sizeToString(d.size) +\n \" (\" +\n d.size.toLocaleString() +\n \" 字节)\",\n show: (d) => true,\n },\n {\n label: \"存储策略\",\n value: (d, t) => d.policy,\n show: (d) => d.type === \"file\",\n },\n {\n label: \"存储策略\",\n value: (d, t) => (d.policy === \"\" ? \"跟随父目录\" : d.policy),\n show: (d) => d.type === \"dir\",\n },\n {\n label: \"包含目录\",\n value: (d, t) => d.child_folder_num.toLocaleString() + \" \" + \"个\",\n show: (d) => d.type === \"dir\",\n },\n {\n label: \"包含文件\",\n value: (d, t) => d.child_file_num.toLocaleString() + \" \" + \"个\",\n show: (d) => d.type === \"dir\",\n },\n {\n label: \"所在目录\",\n // eslint-disable-next-line react/display-name\n value: (d, t) => {\n const path = d.path === \"\" ? t.path : d.path;\n const name = filename(path);\n return (\n \n NavigateTo(path)}\n >\n {name === \"\" ? \"根目录\" : name}\n \n \n );\n },\n show: (d) => true,\n },\n {\n label: \"修改于\",\n value: (d, t) =>\n formatLocalTime(d.updated_at, \"YYYY/MM/DD H:mm:ss\"),\n show: (d) => true,\n },\n {\n label: \"创建于\",\n value: (d) => formatLocalTime(d.created_at, \"YYYY/MM/DD H:mm:ss\"),\n show: (d) => true,\n },\n ];\n const content = (\n \n {!details && }\n {details && (\n <>\n {propsItem.map((item) => {\n if (item.show(target)) {\n return (\n <>\n \n {item.label}\n \n \n {item.value(details, target)}\n \n \n );\n }\n })}\n {target.type === \"dir\" && (\n \n 统计于{\" \"}\n \n \n )}\n \n )}\n \n );\n return (\n <>\n \n \n {target && (\n <>\n \n \n SetSideBar(false)}\n aria-label=\"close\"\n >\n \n \n \n {target.name}\n \n \n \n {content}\n \n )}\n \n \n \n \n \n
\n {target && (\n <>\n
\n {target.type === \"dir\" && (\n \n )}\n {target.type !== \"dir\" && (\n \n )}\n
\n \n {target.name}\n \n
\n SetSideBar(false)}\n className={classes.closeIcon}\n aria-label=\"close\"\n size={\"small\"}\n >\n \n \n
\n \n )}\n \n {content}\n
\n \n
\n \n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { useDrop } from \"react-dnd\";\nimport { PaginationItem } from \"@material-ui/lab\";\n\nexport default function CustomPaginationItem(props) {\n const inputRef = useRef(null);\n\n const [{ canDrop, isOver }, drop] = useDrop({\n accept: \"object\",\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n }),\n });\n\n const isActive = canDrop && isOver;\n\n useEffect(() => {\n if (\n isActive &&\n props.onClick &&\n props.type !== \"start-ellipsis\" &&\n props.type !== \"end-ellipsis\"\n ) {\n console.log(\"ss\");\n props.onClick();\n }\n }, [isActive, inputRef]);\n\n if (\n props.isMobile &&\n (props.type === \"start-ellipsis\" ||\n props.type === \"end-ellipsis\" ||\n props.type === \"page\")\n ) {\n if (props.selected) {\n return (\n
\n {props.page} / {props.count}\n
\n );\n }\n return <>;\n }\n return (\n
\n \n
\n );\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Pagination } from \"@material-ui/lab\";\nimport CustomPaginationItem from \"./PaginationItem\";\nimport { setPagination } from \"../../redux/viewUpdate/action\";\nimport AutoHidden from \"../Dial/AutoHidden\";\nimport statusHelper from \"../../utils/page\";\nimport { useLocation } from \"react-router-dom\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n position: \"fixed\",\n bottom: 23,\n /* left: 8px; */\n background: theme.palette.background.paper,\n borderRadius: 24,\n boxShadow:\n \" 0px 3px 5px -1px rgb(0 0 0 / 20%), 0px 6px 10px 0px rgb(0 0 0 / 14%), 0px 1px 18px 0px rgb(0 0 0 / 12%)\",\n padding: \"8px 4px 8px 4px\",\n marginLeft: 20,\n },\n placeholder: {\n marginTop: 80,\n },\n}));\n\nexport default function PaginationFooter() {\n const classes = useStyles();\n const dispatch = useDispatch();\n const files = useSelector((state) => state.explorer.fileList);\n const folders = useSelector((state) => state.explorer.dirList);\n const pagination = useSelector((state) => state.viewUpdate.pagination);\n const loading = useSelector((state) => state.viewUpdate.navigatorLoading);\n const location = useLocation();\n\n const SetPagination = useCallback((p) => dispatch(setPagination(p)), [\n dispatch,\n ]);\n\n const handleChange = (event, value) => {\n SetPagination({ ...pagination, page: value });\n };\n\n const count = useMemo(\n () => Math.ceil((files.length + folders.length) / pagination.size),\n [files, folders, pagination.size]\n );\n\n const isMobile = statusHelper.isMobile();\n const isSharePage = statusHelper.isSharePage(location.pathname);\n\n if (count > 1 && !loading) {\n return (\n <>\n {!isMobile && !isSharePage && (\n
\n )}\n \n
\n (\n \n )}\n color=\"secondary\"\n count={count}\n page={pagination.page}\n onChange={handleChange}\n />\n
\n \n \n );\n }\n return
;\n}\n","import React, { Component } from \"react\";\n\nimport Navigator from \"./Navigator/Navigator\";\nimport { DndProvider } from \"react-dnd\";\nimport HTML5Backend from \"react-dnd-html5-backend\";\nimport DragLayer from \"./DnD/DragLayer\";\nimport Explorer from \"./Explorer\";\nimport Modals from \"./Modals\";\nimport { withStyles } from \"@material-ui/core\";\nimport { connect } from \"react-redux\";\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\nimport { withRouter } from \"react-router-dom\";\nimport pathHelper from \"../../utils/page\";\nimport SideDrawer from \"./Sidebar/SideDrawer\";\nimport classNames from \"classnames\";\n// import { ImageLoader } from \"@abslant/cd-image-loader\";\nimport {\n closeAllModals,\n navigateTo,\n setSelectedTarget,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport PaginationFooter from \"./Pagination\";\n\nconst styles = (theme) => ({\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"calc(100vh - 64px)\",\n [theme.breakpoints.down(\"xs\")]: {\n height: \"100%\",\n },\n },\n rootShare: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n minHeight: 500,\n },\n explorer: {\n display: \"flex\",\n flexDirection: \"column\",\n overflowY: \"auto\",\n minHeight: 500,\n },\n});\n\nconst mapStateToProps = () => ({});\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n changeSubTitle: (text) => {\n dispatch(changeSubTitle(text));\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n closeAllModals: () => {\n dispatch(closeAllModals());\n },\n navigateTo: (path) => {\n dispatch(navigateTo(path));\n },\n };\n};\n\nclass FileManager extends Component {\n constructor(props) {\n super(props);\n this.image = React.createRef();\n }\n\n componentWillUnmount() {\n this.props.setSelectedTarget([]);\n this.props.closeAllModals();\n this.props.navigateTo(\"/\");\n }\n\n componentDidMount() {\n if (pathHelper.isHomePage(this.props.location.pathname)) {\n this.props.changeSubTitle(null);\n }\n }\n\n render() {\n const { classes } = this.props;\n return (\n \n \n \n \n
\n \n \n
\n\n \n {/* */}\n
\n \n
\n );\n }\n}\n\nFileManager.propTypes = {};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(FileManager)));\n","import React from \"react\";\nimport {\n Icon,\n ListItemIcon,\n makeStyles,\n Menu,\n MenuItem,\n} from \"@material-ui/core\";\nimport CheckIcon from \"@material-ui/icons/Check\";\n\nconst useStyles = makeStyles((theme) => ({\n icon: {\n minWidth: 38,\n },\n}));\n\nexport default function SelectMenu({\n options,\n anchorEl,\n handleClose,\n callback,\n selected,\n showIcon = true,\n}) {\n const classes = useStyles();\n\n return (\n \n {options.map((item) => (\n <>\n callback(item)}\n >\n {showIcon && (\n \n {item.name !== selected ? (\n \n ) : (\n \n )}\n \n )}\n\n {item.name}\n \n \n ))}\n \n );\n}\n","import React, { Suspense, useCallback, useEffect, useState } from \"react\";\nimport { Button, Paper } from \"@material-ui/core\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport { useDispatch } from \"react-redux\";\nimport pathHelper from \"../../utils/page\";\nimport UseFileSubTitle from \"../../hooks/fileSubtitle\";\nimport { getPreviewURL } from \"../../middleware/Api\";\nimport { useHistory } from \"react-router-dom\";\nimport { basename, fileNameNoExt, isMobileSafari } from \"../../utils\";\nimport { list } from \"../../services/navigate\";\nimport { getViewerURL } from \"../../redux/explorer/action\";\nimport { subtitleSuffix, videoPreviewSuffix } from \"../../config\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport { pathJoin } from \"../Uploader/core/utils\";\nimport { Launch, PlaylistPlay, Subtitles } from \"@material-ui/icons\";\nimport TextLoading from \"../Placeholder/TextLoading\";\nimport SelectMenu from \"./SelectMenu\";\nimport { getDownloadURL } from \"../../services/file\";\n\nconst Artplayer = React.lazy(() =>\n import(\n /* webpackChunkName: \"artplayer\" */ \"artplayer/examples/react/Artplayer\"\n )\n);\n\nconst externalPlayers = [\n {\n name: \"PotPlayer\",\n url: (source, title) => `potplayer://${source}`,\n },\n {\n name: \"VLC\",\n url: (source, title) => `vlc://${source}`,\n },\n {\n name: \"IINA\",\n url: (source, title) => `iina://weblink?url=${source}`,\n },\n {\n name: \"nPlayer\",\n url: (source, title) => `nplayer-${source}`,\n },\n {\n name: \"MXPlayer (Free)\",\n url: (source, title) =>\n `intent:${source}#Intent;package=com.mxtech.videoplayer.ad;S.title=${title};end`,\n },\n {\n name: \"MXPlayer (Pro)\",\n url: (source, title) =>\n `intent:${source}#Intent;package=com.mxtech.videoplayer.pro;S.title=${title};end`,\n },\n];\n\nconst useStyles = makeStyles((theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"30px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n marginBottom: 50,\n },\n player: {\n borderRadius: \"4px\",\n height: 600,\n },\n actions: {\n marginTop: theme.spacing(2),\n },\n actionButton: {\n marginRight: theme.spacing(1),\n marginTop: theme.spacing(1),\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function VideoViewer() {\n const math = useRouteMatch();\n const location = useLocation();\n const query = useQuery();\n const { id } = useParams();\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n const { title, path } = UseFileSubTitle(query, math, location);\n const theme = useTheme();\n const [art, setArt] = useState(null);\n const history = useHistory();\n const [files, setFiles] = useState([]);\n const [subtitles, setSubtitles] = useState([]);\n const [playlist, setPlaylist] = useState([]);\n const [subtitleOpen, setSubtitleOpen] = useState(null);\n const [subtitleSelected, setSubtitleSelected] = useState(\"\");\n const [playlistOpen, setPlaylistOpen] = useState(null);\n const [externalPlayerOpen, setExternalPlayerOpen] = useState(null);\n const isShare = pathHelper.isSharePage(location.pathname);\n\n useEffect(() => {\n art &&\n art.on(\"ready\", () => {\n art.autoHeight = true;\n });\n return () => {\n if (\n art !== null &&\n !isMobileSafari() &&\n document.pictureInPictureEnabled &&\n art.playing\n ) {\n art.pip = true;\n art.query(\".art-video\").addEventListener(\n \"leavepictureinpicture\",\n () => {\n art.pause();\n },\n false\n );\n }\n };\n }, [art]);\n\n const classes = useStyles();\n\n useEffect(() => {\n if (art !== null) {\n const newURL = getPreviewURL(\n isShare,\n id,\n query.get(\"id\"),\n query.get(\"share_path\")\n );\n if (newURL !== art.url) {\n if (art.subtitle) {\n art.subtitle.show = false;\n }\n art.switchUrl(newURL);\n if (path && path !== \"\") {\n list(\n basename(path),\n isShare ? { key: id } : null,\n \"\",\n \"\"\n ).then((res) => {\n setFiles(\n res.data.objects.filter((o) => o.type === \"file\")\n );\n setPlaylist(\n res.data.objects.filter(\n (o) =>\n o.type === \"file\" &&\n videoPreviewSuffix.indexOf(\n o.name.split(\".\").pop().toLowerCase()\n ) !== -1\n )\n );\n });\n }\n }\n }\n }, [art, id, location, path]);\n\n const switchSubtitle = (f) => {\n if (art !== null) {\n const fileType = f.name.split(\".\").pop().toLowerCase();\n art.subtitle.switch(\n getPreviewURL(\n isShare,\n id,\n f.id,\n pathJoin([basename(query.get(\"share_path\")), f.name])\n ),\n {\n type: fileType,\n }\n );\n art.subtitle.show = true;\n setSubtitleSelected(f.name);\n ToggleSnackbar(\"top\", \"center\", `字幕切换到:${f.name} `, \"info\");\n }\n };\n\n useEffect(() => {\n if (files.length > 0) {\n const options = files.filter((f) => {\n const fileType = f.name.split(\".\").pop().toLowerCase();\n if (subtitleSuffix.indexOf(fileType) !== -1) {\n if (fileNameNoExt(f.name) === fileNameNoExt(title)) {\n switchSubtitle(f);\n }\n return true;\n }\n return false;\n });\n setSubtitles(options);\n }\n }, [files]);\n\n const switchVideo = (file) => {\n if (isShare) {\n file.key = id;\n }\n if (isMobileSafari()) {\n window.location.href = getViewerURL(\"video\", file, isShare);\n } else {\n history.push(getViewerURL(\"video\", file, isShare));\n }\n };\n\n const setSubtitle = (sub) => {\n setSubtitleOpen(null);\n switchSubtitle(sub);\n };\n\n const startSelectSubTitle = (e) => {\n if (subtitles.length === 0) {\n ToggleSnackbar(\n \"top\",\n \"right\",\n `视频目录下没有可用字幕文件 (支持:ASS/SRT/VTT)`,\n \"warning\"\n );\n return;\n }\n setSubtitleOpen(e.currentTarget);\n };\n\n const openInExternalPlayer = (player) => {\n const current = { name: title };\n current.id = query.get(\"id\");\n current.path = basename(path);\n if (isShare) {\n current.key = id;\n }\n\n setExternalPlayerOpen(null);\n getDownloadURL(current)\n .then((response) => {\n window.location.assign(player.url(response.data, title));\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n };\n\n return (\n
\n \n }>\n setArt(a)}\n />\n \n \n
\n }\n variant=\"outlined\"\n >\n 选择字幕\n \n {playlist.length >= 2 && (\n setPlaylistOpen(e.currentTarget)}\n className={classes.actionButton}\n startIcon={}\n variant=\"outlined\"\n >\n 播放列表\n \n )}\n setExternalPlayerOpen(e.currentTarget)}\n className={classes.actionButton}\n startIcon={}\n variant=\"outlined\"\n >\n 用外部播放器打开\n \n
\n setSubtitleOpen(null)}\n />\n setPlaylistOpen(null)}\n />\n setExternalPlayerOpen(null)}\n />\n
\n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport Pagination from \"@material-ui/lab/Pagination\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\n\nimport {\n Avatar,\n Card,\n CardHeader,\n Grid,\n IconButton,\n Tooltip,\n Typography,\n} from \"@material-ui/core\";\nimport API from \"../../middleware/Api\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport { useHistory } from \"react-router-dom\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useLocation } from \"react-router\";\nimport TimeAgo from \"timeago-react\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport Nothing from \"../Placeholder/Nothing\";\n\nconst useStyles = makeStyles((theme) => ({\n cardContainer: {\n padding: theme.spacing(1),\n },\n card: {\n maxWidth: 400,\n margin: \"0 auto\",\n },\n actions: {\n display: \"flex\",\n },\n layout: {\n width: \"auto\",\n marginTop: \"50px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n shareTitle: {\n maxWidth: \"200px\",\n },\n avatarFile: {\n backgroundColor: theme.palette.primary.light,\n },\n avatarFolder: {\n backgroundColor: theme.palette.secondary.light,\n },\n gird: {\n marginTop: \"30px\",\n },\n loadMore: {\n textAlign: \"right\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n badge: {\n marginLeft: theme.spacing(1),\n height: 17,\n },\n orderSelect: {\n textAlign: \"right\",\n marginTop: 5,\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function SearchResult() {\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const query = useQuery();\n const location = useLocation();\n const history = useHistory();\n\n const [page, setPage] = useState(1);\n const [total, setTotal] = useState(0);\n const [shareList, setShareList] = useState([]);\n const [orderBy, setOrderBy] = useState(\"created_at DESC\");\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const search = (keywords, page, orderBy) => {\n const order = orderBy.split(\" \");\n API.get(\n \"/share/search?page=\" +\n page +\n \"&order_by=\" +\n order[0] +\n \"&order=\" +\n order[1] +\n \"&keywords=\" +\n encodeURIComponent(keywords)\n )\n .then((response) => {\n setTotal(response.data.total);\n setShareList(response.data.items);\n })\n .catch(() => {\n ToggleSnackbar(\"top\", \"right\", \"加载失败\", \"error\");\n });\n };\n\n useEffect(() => {\n const keywords = query.get(\"keywords\");\n if (keywords) {\n search(keywords, page, orderBy);\n } else {\n ToggleSnackbar(\"top\", \"right\", \"请输入搜索关键词\", \"warning\");\n }\n }, [location]);\n\n const handlePageChange = (event, value) => {\n setPage(value);\n const keywords = query.get(\"keywords\");\n search(keywords, value, orderBy);\n };\n\n const handleOrderChange = (event) => {\n setOrderBy(event.target.value);\n const keywords = query.get(\"keywords\");\n search(keywords, page, event.target.value);\n };\n\n return (\n
\n \n \n \n 搜索结果\n \n \n \n \n \n \n 创建日期由晚到早\n \n \n 创建日期由早到晚\n \n \n 下载次数由大到小\n \n \n 下载次数由小到大\n \n \n 浏览次数由大到小\n \n \n 浏览次数由小到大\n \n \n \n \n \n \n {shareList.length === 0 && }\n {shareList.map((value) => (\n \n \n \n {!value.is_dir && (\n \n )}{\" \"}\n {value.is_dir && (\n \n \n \n )}\n
\n }\n action={\n \n \n history.push(\"/s/\" + value.key)\n }\n >\n \n \n \n }\n title={\n \n \n {value.source\n ? value.source.name\n : \"[原始对象不存在]\"}{\" \"}\n \n \n }\n subheader={\n \n 分享于{\" \"}\n \n \n }\n />\n \n \n ))}\n \n
\n \n
{\" \"}\n \n );\n}\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport Pagination from \"@material-ui/lab/Pagination\";\nimport FolderIcon from \"@material-ui/icons/Folder\";\nimport LockIcon from \"@material-ui/icons/Lock\";\nimport UnlockIcon from \"@material-ui/icons/LockOpen\";\nimport EyeIcon from \"@material-ui/icons/RemoveRedEye\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\n\nimport {\n Avatar,\n Button,\n Card,\n CardActions,\n CardHeader,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n IconButton,\n TextField,\n Tooltip,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport API from \"../../middleware/Api\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport Chip from \"@material-ui/core/Chip\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { VisibilityOff, VpnKey } from \"@material-ui/icons\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport { withRouter } from \"react-router-dom\";\nimport ToggleIcon from \"material-ui-toggle-icon\";\nimport { formatLocalTime } from \"../../utils/datetime\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport Nothing from \"../Placeholder/Nothing\";\n\nconst styles = (theme) => ({\n cardContainer: {\n padding: theme.spacing(1),\n },\n card: {\n maxWidth: 400,\n margin: \"0 auto\",\n },\n actions: {\n display: \"flex\",\n },\n layout: {\n width: \"auto\",\n marginTop: \"50px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n shareTitle: {\n maxWidth: \"200px\",\n },\n avatarFile: {\n backgroundColor: theme.palette.primary.light,\n },\n avatarFolder: {\n backgroundColor: theme.palette.secondary.light,\n },\n gird: {\n marginTop: \"30px\",\n },\n loadMore: {\n textAlign: \"right\",\n marginTop: \"20px\",\n marginBottom: \"40px\",\n },\n badge: {\n marginLeft: theme.spacing(1),\n height: 17,\n },\n orderSelect: {\n textAlign: \"right\",\n marginTop: 5,\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass MyShareCompoment extends Component {\n state = {\n page: 1,\n total: 0,\n shareList: [],\n showPwd: null,\n orderBy: \"created_at DESC\",\n };\n\n componentDidMount = () => {\n this.loadList(1, this.state.orderBy);\n };\n\n showPwd = (pwd) => {\n this.setState({ showPwd: pwd });\n };\n\n handleClose = () => {\n this.setState({ showPwd: null });\n };\n\n removeShare = (id) => {\n API.delete(\"/share/\" + id)\n .then(() => {\n let oldList = this.state.shareList;\n oldList = oldList.filter((value) => {\n return value.key !== id;\n });\n this.setState({\n shareList: oldList,\n total: this.state.total - 1,\n });\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"分享已取消\",\n \"success\"\n );\n if (oldList.length === 0) {\n this.loadList(1, this.state.orderBy);\n }\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n changePermission = (id) => {\n const newPwd = Math.random().toString(36).substr(2).slice(2, 8);\n const oldList = this.state.shareList;\n const shareIndex = oldList.findIndex((value) => {\n return value.key === id;\n });\n API.patch(\"/share/\" + id, {\n prop: \"password\",\n value: oldList[shareIndex].password === \"\" ? newPwd : \"\",\n })\n .then((response) => {\n oldList[shareIndex].password = response.data;\n this.setState({\n shareList: oldList,\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n changePreviewOption = (id) => {\n const oldList = this.state.shareList;\n const shareIndex = oldList.findIndex((value) => {\n return value.key === id;\n });\n API.patch(\"/share/\" + id, {\n prop: \"preview_enabled\",\n value: oldList[shareIndex].preview ? \"false\" : \"true\",\n })\n .then((response) => {\n oldList[shareIndex].preview = response.data;\n this.setState({\n shareList: oldList,\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n loadList = (page, orderBy) => {\n const order = orderBy.split(\" \");\n API.get(\n \"/share?page=\" +\n page +\n \"&order_by=\" +\n order[0] +\n \"&order=\" +\n order[1]\n )\n .then((response) => {\n this.setState({\n total: response.data.total,\n shareList: response.data.items,\n });\n })\n .catch(() => {\n this.props.toggleSnackbar(\"top\", \"right\", \"加载失败\", \"error\");\n });\n };\n\n handlePageChange = (event, value) => {\n this.setState({\n page: value,\n });\n this.loadList(value, this.state.orderBy);\n };\n\n handleOrderChange = (event) => {\n this.setState({\n orderBy: event.target.value,\n });\n this.loadList(this.state.page, event.target.value);\n };\n\n isExpired = (share) => {\n return share.expire < -1 || share.remain_downloads === 0;\n };\n\n render() {\n const { classes } = this.props;\n\n return (\n
\n \n \n \n 我的分享\n \n \n \n \n \n \n 创建日期由晚到早\n \n \n 创建日期由早到晚\n \n \n 下载次数由大到小\n \n \n 下载次数由小到大\n \n \n 浏览次数由大到小\n \n \n 浏览次数由小到大\n \n \n \n \n \n \n {this.state.shareList.length === 0 && (\n \n )}\n {this.state.shareList.map((value) => (\n \n \n \n {!value.is_dir && (\n \n )}{\" \"}\n {value.is_dir && (\n \n \n \n )}\n
\n }\n title={\n \n \n {value.source\n ? value.source.name\n : \"[原始对象不存在]\"}{\" \"}\n \n \n }\n subheader={\n \n {formatLocalTime(\n value.create_date,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n {this.isExpired(value) && (\n \n )}\n \n }\n />\n \n \n \n \n this.props.history.push(\n \"/s/\" +\n value.key +\n (value.password === \"\"\n ? \"\"\n : \"?password=\" +\n value.password)\n )\n }\n >\n \n \n {\" \"}\n {value.password !== \"\" && (\n <>\n \n this.changePermission(\n value.key\n )\n }\n >\n \n \n \n \n \n this.showPwd(value.password)\n }\n >\n \n \n \n \n \n )}\n {value.password === \"\" && (\n \n this.changePermission(value.key)\n }\n >\n \n \n \n \n )}\n \n this.changePreviewOption(value.key)\n }\n >\n \n \n }\n offIcon={\n \n }\n />\n \n \n \n this.removeShare(value.key)\n }\n >\n \n \n \n \n \n \n \n ))}\n \n
\n \n
{\" \"}\n \n 分享密码 {\" \"}\n \n \n {\" \"}\n \n {\" \"}\n {\" \"}\n {\" \"}\n \n );\n }\n}\n\nconst MyShare = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(MyShareCompoment)));\n\nexport default MyShare;\n","import React, { useState, useEffect } from \"react\";\nimport { makeStyles } from \"@material-ui/core\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n CircularProgress,\n} from \"@material-ui/core\";\nimport FormGroup from \"@material-ui/core/FormGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\n\nconst useStyles = makeStyles((theme) => ({\n contentFix: {\n padding: \"10px 24px 0px 24px\",\n },\n wrapper: {\n margin: theme.spacing(1),\n position: \"relative\",\n },\n buttonProgress: {\n color: theme.palette.secondary.light,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n content: {\n padding: 0,\n },\n}));\n\nexport default function SelectFileDialog(props) {\n const [files, setFiles] = useState(props.files);\n\n useEffect(() => {\n setFiles(props.files);\n }, [props.files]);\n\n const handleChange = (index) => (event) => {\n const filesCopy = [...files];\n // eslint-disable-next-line\n filesCopy.map((v, k) => {\n if (v.index === index) {\n filesCopy[k] = {\n ...filesCopy[k],\n selected: event.target.checked ? \"true\" : \"false\",\n };\n }\n });\n setFiles(filesCopy);\n };\n\n const submit = () => {\n const index = [];\n // eslint-disable-next-line\n files.map((v) => {\n if (v.selected === \"true\") {\n index.push(parseInt(v.index));\n }\n });\n props.onSubmit(index);\n };\n\n const classes = useStyles();\n\n return (\n \n 选择要下载的文件\n \n {files.map((v, k) => {\n return (\n \n \n \n }\n label={v.path}\n />\n \n \n );\n })}\n \n \n \n
\n \n 确定\n {props.modalsLoading && (\n \n )}\n \n
\n
\n \n );\n}\n","import React, { useCallback, useEffect } from \"react\";\nimport {\n Card,\n CardContent,\n darken,\n IconButton,\n lighten,\n LinearProgress,\n makeStyles,\n Typography,\n useTheme,\n} from \"@material-ui/core\";\nimport { useDispatch } from \"react-redux\";\nimport { hex2bin, sizeToString } from \"../../utils\";\nimport PermMediaIcon from \"@material-ui/icons/PermMedia\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { ExpandMore, HighlightOff } from \"@material-ui/icons\";\nimport classNames from \"classnames\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport Table from \"@material-ui/core/Table\";\nimport Badge from \"@material-ui/core/Badge\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport API from \"../../middleware/Api\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport TimeAgo from \"timeago-react\";\nimport SelectFileDialog from \"../Modals/SelectFile\";\nimport { useHistory } from \"react-router\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\n\nconst ExpansionPanel = withStyles({\n root: {\n maxWidth: \"100%\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {},\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n minHeight: 0,\n padding: 0,\n\n \"&$expanded\": {\n minHeight: 56,\n },\n },\n content: {\n maxWidth: \"100%\",\n margin: 0,\n display: \"flex\",\n \"&$expanded\": {\n margin: \"0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n display: \"block\",\n padding: theme.spacing(0),\n },\n}))(MuiExpansionPanelDetails);\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n marginTop: \"20px\",\n justifyContent: \"space-between\",\n },\n iconContainer: {\n width: \"90px\",\n height: \"96px\",\n padding: \" 35px 29px 29px 29px\",\n paddingLeft: \"35px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n content: {\n width: \"100%\",\n minWidth: 0,\n [theme.breakpoints.up(\"sm\")]: {\n borderInlineStart: \"1px \" + theme.palette.divider + \" solid\",\n },\n },\n contentSide: {\n minWidth: 0,\n paddingTop: \"24px\",\n paddingRight: \"28px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n iconBig: {\n fontSize: \"30px\",\n },\n iconMultiple: {\n fontSize: \"30px\",\n color: \"#607D8B\",\n },\n progress: {\n marginTop: 8,\n marginBottom: 4,\n },\n expand: {\n transition: \".15s transform ease-in-out\",\n },\n expanded: {\n transform: \"rotate(180deg)\",\n },\n subFileName: {\n display: \"flex\",\n },\n subFileIcon: {\n marginRight: \"20px\",\n },\n scroll: {\n overflowY: \"auto\",\n },\n action: {\n padding: theme.spacing(2),\n textAlign: \"right\",\n },\n actionButton: {\n marginLeft: theme.spacing(1),\n },\n info: {\n padding: theme.spacing(2),\n },\n infoTitle: {\n fontWeight: 700,\n },\n infoValue: {\n color: theme.palette.text.secondary,\n },\n bitmap: {\n width: \"100%\",\n height: \"50px\",\n backgroundColor: theme.palette.background.default,\n },\n}));\n\nexport default function DownloadingCard(props) {\n const canvasRef = React.createRef();\n const classes = useStyles();\n const theme = useTheme();\n const history = useHistory();\n\n const [expanded, setExpanded] = React.useState(\"\");\n const [task, setTask] = React.useState(props.task);\n const [loading, setLoading] = React.useState(false);\n const [selectDialogOpen, setSelectDialogOpen] = React.useState(false);\n const [selectFileOption, setSelectFileOption] = React.useState([]);\n\n const handleChange = (panel) => (event, newExpanded) => {\n setExpanded(newExpanded ? panel : false);\n };\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n setTask(props.task);\n }, [props.task]);\n\n useEffect(() => {\n if (task.info.bitfield === \"\") {\n return;\n }\n let result = \"\";\n task.info.bitfield.match(/.{1,2}/g).forEach((str) => {\n result += hex2bin(str);\n });\n const canvas = canvasRef.current;\n const context = canvas.getContext(\"2d\");\n context.clearRect(0, 0, canvas.width, canvas.height);\n context.strokeStyle = theme.palette.primary.main;\n for (let i = 0; i < canvas.width; i++) {\n let bit =\n result[\n Math.round(((i + 1) / canvas.width) * task.info.numPieces)\n ];\n bit = bit ? bit : result.slice(-1);\n if (bit === \"1\") {\n context.beginPath();\n context.moveTo(i, 0);\n context.lineTo(i, canvas.height);\n context.stroke();\n }\n }\n // eslint-disable-next-line\n }, [task.info.bitfield, task.info.numPieces, theme]);\n\n const getPercent = (completed, total) => {\n if (total === 0) {\n return 0;\n }\n return (completed / total) * 100;\n };\n\n const activeFiles = useCallback(() => {\n return task.info.files.filter((v) => v.selected === \"true\");\n }, [task.info.files]);\n\n const deleteFile = (index) => {\n setLoading(true);\n const current = activeFiles();\n const newIndex = [];\n const newFiles = [];\n // eslint-disable-next-line\n current.map((v) => {\n if (v.index !== index && v.selected) {\n newIndex.push(parseInt(v.index));\n newFiles.push({\n ...v,\n selected: \"true\",\n });\n } else {\n newFiles.push({\n ...v,\n selected: \"false\",\n });\n }\n });\n API.put(\"/aria2/select/\" + task.info.gid, {\n indexes: newIndex,\n })\n .then(() => {\n setTask({\n ...task,\n info: {\n ...task.info,\n files: newFiles,\n },\n });\n ToggleSnackbar(\"top\", \"right\", \"文件已删除\", \"success\");\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n setLoading(false);\n });\n };\n\n const getDownloadName = useCallback(() => {\n if (task.info.bittorrent.info.name !== \"\") {\n return task.info.bittorrent.info.name;\n }\n return task.name === \".\" ? \"[未知]\" : task.name;\n }, [task]);\n\n const getIcon = useCallback(() => {\n if (task.info.bittorrent.mode === \"multi\") {\n return (\n \n \n \n );\n } else {\n return (\n \n );\n }\n // eslint-disable-next-line\n }, [task, classes]);\n\n const cancel = () => {\n setLoading(true);\n API.delete(\"/aria2/task/\" + task.info.gid)\n .then(() => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"任务已取消,状态会在稍后更新\",\n \"success\"\n );\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n setLoading(false);\n });\n };\n\n const changeSelectedFile = (fileIndex) => {\n setLoading(true);\n API.put(\"/aria2/select/\" + task.info.gid, {\n indexes: fileIndex,\n })\n .then(() => {\n ToggleSnackbar(\n \"top\",\n \"right\",\n \"操作成功,状态会在稍后更新\",\n \"success\"\n );\n setSelectDialogOpen(false);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n setLoading(false);\n });\n };\n\n return (\n \n setSelectDialogOpen(false)}\n modalsLoading={loading}\n files={selectFileOption}\n onSubmit={changeSelectedFile}\n />\n \n \n
{getIcon()}
\n \n \n \n {getDownloadName()}\n \n \n \n \n {task.total > 0 && (\n \n {getPercent(\n task.downloaded,\n task.total\n ).toFixed(2)}\n % -{\" \"}\n {task.downloaded === 0\n ? \"0Bytes\"\n : sizeToString(task.downloaded)}\n /\n {task.total === 0\n ? \"0Bytes\"\n : sizeToString(task.total)}{\" \"}\n -{\" \"}\n {task.speed === \"0\"\n ? \"0B/s\"\n : sizeToString(task.speed) + \"/s\"}\n \n )}\n {task.total === 0 && - }\n \n \n \n \n \n \n \n \n \n \n {task.info.bittorrent.mode === \"multi\" && (\n
\n \n \n {activeFiles().map((value) => {\n return (\n \n \n \n \n {value.path}\n \n \n \n \n {\" \"}\n {sizeToString(\n value.length\n )}\n \n \n \n \n {getPercent(\n value.completedLength,\n value.length\n ).toFixed(2)}\n %\n \n \n \n \n \n deleteFile(\n value.index\n )\n }\n disabled={loading}\n size={\"small\"}\n >\n \n \n \n \n \n );\n })}\n \n
\n
\n )}\n\n
\n \n history.push(\n \"/home?path=\" +\n encodeURIComponent(task.dst)\n )\n }\n >\n 打开存放目录\n \n {task.info.bittorrent.mode === \"multi\" && (\n {\n setSelectDialogOpen(true);\n setSelectFileOption([\n ...props.task.info.files,\n ]);\n }}\n >\n 选择要下载的文件\n \n )}\n \n 取消任务\n \n
\n \n
\n {task.info.bitfield !== \"\" && (\n \n )}\n\n \n \n \n 更新于:\n \n \n \n \n \n \n \n 上传大小:\n \n \n {sizeToString(task.info.uploadLength)}\n \n \n \n \n 上传速度:\n \n \n {sizeToString(task.info.uploadSpeed)} / s\n \n \n {task.info.bittorrent.mode !== \"\" && (\n <>\n \n \n InfoHash:\n \n \n {task.info.infoHash}\n \n \n \n \n 做种者:\n \n \n {task.info.numSeeders}\n \n \n \n \n 做种中:\n \n \n {task.info.seeder === \"true\"\n ? \"是\"\n : \"否\"}\n \n \n \n )}\n \n \n 分片大小:\n \n \n {sizeToString(task.info.pieceLength)}\n \n \n \n \n 分片数量:\n \n \n {task.info.numPieces}\n \n \n \n
\n
\n \n
\n );\n}\n","import React, { useCallback } from \"react\";\nimport {\n Card,\n CardContent,\n IconButton,\n makeStyles,\n Typography,\n useTheme,\n} from \"@material-ui/core\";\nimport { sizeToString } from \"../../utils\";\nimport PermMediaIcon from \"@material-ui/icons/PermMedia\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Divider from \"@material-ui/core/Divider\";\nimport { ExpandMore } from \"@material-ui/icons\";\nimport classNames from \"classnames\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport Table from \"@material-ui/core/Table\";\nimport Badge from \"@material-ui/core/Badge\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport Button from \"@material-ui/core/Button\";\nimport Grid from \"@material-ui/core/Grid\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport { useHistory } from \"react-router\";\nimport { formatLocalTime } from \"../../utils/datetime\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\n\nconst ExpansionPanel = withStyles({\n root: {\n maxWidth: \"100%\",\n boxShadow: \"none\",\n \"&:not(:last-child)\": {\n borderBottom: 0,\n },\n \"&:before\": {\n display: \"none\",\n },\n \"&$expanded\": {},\n },\n expanded: {},\n})(MuiExpansionPanel);\n\nconst ExpansionPanelSummary = withStyles({\n root: {\n minHeight: 0,\n padding: 0,\n\n \"&$expanded\": {\n minHeight: 56,\n },\n },\n content: {\n maxWidth: \"100%\",\n margin: 0,\n display: \"flex\",\n \"&$expanded\": {\n margin: \"0\",\n },\n },\n expanded: {},\n})(MuiExpansionPanelSummary);\n\nconst ExpansionPanelDetails = withStyles((theme) => ({\n root: {\n display: \"block\",\n padding: theme.spacing(0),\n },\n}))(MuiExpansionPanelDetails);\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n marginTop: \"20px\",\n justifyContent: \"space-between\",\n },\n iconContainer: {\n width: \"90px\",\n height: \"96px\",\n padding: \" 35px 29px 29px 29px\",\n paddingLeft: \"35px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n content: {\n width: \"100%\",\n minWidth: 0,\n [theme.breakpoints.up(\"sm\")]: {\n borderInlineStart: \"1px \" + theme.palette.divider + \" solid\",\n },\n textAlign: \"left\",\n },\n contentSide: {\n minWidth: 0,\n paddingTop: \"24px\",\n paddingRight: \"28px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"none\",\n },\n },\n iconBig: {\n fontSize: \"30px\",\n },\n iconMultiple: {\n fontSize: \"30px\",\n color: \"#607D8B\",\n },\n progress: {\n marginTop: 8,\n marginBottom: 4,\n },\n expand: {\n transition: \".15s transform ease-in-out\",\n },\n expanded: {\n transform: \"rotate(180deg)\",\n },\n subFileName: {\n display: \"flex\",\n },\n subFileIcon: {\n marginRight: \"20px\",\n },\n scroll: {\n overflowY: \"auto\",\n },\n action: {\n padding: theme.spacing(2),\n textAlign: \"right\",\n },\n actionButton: {\n marginLeft: theme.spacing(1),\n },\n info: {\n padding: theme.spacing(2),\n },\n infoTitle: {\n fontWeight: 700,\n },\n infoValue: {\n color: theme.palette.text.secondary,\n },\n}));\n\nexport default function FinishedCard(props) {\n const classes = useStyles();\n const theme = useTheme();\n const history = useHistory();\n\n const [expanded, setExpanded] = React.useState(false);\n const [loading, setLoading] = React.useState(false);\n\n const dispatch = useDispatch();\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n const handleChange = () => (event, newExpanded) => {\n setExpanded(!!newExpanded);\n };\n\n const cancel = () => {\n setLoading(true);\n API.delete(\"/aria2/task/\" + props.task.gid)\n .then(() => {\n ToggleSnackbar(\"top\", \"right\", \"删除成功\", \"success\");\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n })\n .then(() => {\n window.location.reload();\n });\n };\n\n const getPercent = (completed, total) => {\n if (total == 0) {\n return 0;\n }\n return (completed / total) * 100;\n };\n\n const getDownloadName = useCallback(() => {\n return props.task.name === \".\" ? \"[未知]\" : props.task.name;\n }, [props.task.name]);\n\n const activeFiles = useCallback(() => {\n return props.task.files.filter((v) => v.selected === \"true\");\n }, [props.task.files]);\n\n const getIcon = useCallback(() => {\n if (props.task.files.length > 1) {\n return (\n \n \n \n );\n } else {\n return (\n \n );\n }\n }, [props.task, classes]);\n\n const getTaskError = (error) => {\n try {\n const res = JSON.parse(error);\n return res.msg + \":\" + res.error;\n } catch (e) {\n return \"文件转存失败\";\n }\n };\n\n return (\n \n \n \n
{getIcon()}
\n \n \n \n {getDownloadName()}\n \n \n {props.task.status === 3 && (\n \n \n 下载出错:{props.task.error}\n \n \n )}\n {props.task.status === 5 && (\n \n 已取消\n {props.task.error !== \"\" && (\n :{props.task.error}\n )}\n \n )}\n {props.task.status === 4 &&\n props.task.task_status === 4 && (\n \n 已完成\n \n )}\n {props.task.status === 4 &&\n props.task.task_status === 0 && (\n \n 已完成,转存排队中\n \n )}\n {props.task.status === 4 &&\n props.task.task_status === 1 && (\n \n 已完成,转存处理中\n \n )}\n {props.task.status === 4 &&\n props.task.task_status === 2 && (\n \n {getTaskError(props.task.task_error)}\n \n )}\n \n \n \n \n \n \n \n \n \n {props.task.files.length > 1 && (\n
\n \n \n {activeFiles().map((value) => {\n return (\n \n \n \n \n {value.path}\n \n \n \n \n {\" \"}\n {sizeToString(\n value.length\n )}\n \n \n \n \n {getPercent(\n value.completedLength,\n value.length\n ).toFixed(2)}\n %\n \n \n \n );\n })}\n \n
\n
\n )}\n\n
\n \n history.push(\n \"/home?path=\" +\n encodeURIComponent(props.task.dst)\n )\n }\n >\n 打开存放目录\n \n \n 删除记录\n \n
\n \n
\n \n \n \n 创建日期:\n \n \n {formatLocalTime(\n props.task.create,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n \n \n 最后更新:\n \n \n {formatLocalTime(\n props.task.update,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n \n \n \n
\n
\n \n
\n );\n}\n","import React, { useCallback } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport AutoHidden from \"./AutoHidden\";\nimport { makeStyles } from \"@material-ui/core\";\nimport Fab from \"@material-ui/core/Fab\";\nimport { Add } from \"@material-ui/icons\";\nimport Modals from \"../FileManager/Modals\";\nimport { openRemoteDownloadDialog } from \"../../redux/explorer\";\n\nconst useStyles = makeStyles(() => ({\n fab: {\n margin: 0,\n top: \"auto\",\n right: 20,\n bottom: 20,\n left: \"auto\",\n zIndex: 5,\n position: \"fixed\",\n },\n}));\n\nexport default function RemoteDownloadButton() {\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const OpenRemoteDownloadDialog = useCallback(\n () => dispatch(openRemoteDownloadDialog()),\n [dispatch]\n );\n\n return (\n <>\n \n \n OpenRemoteDownloadDialog()}\n >\n \n \n \n \n );\n}\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport API from \"../../middleware/Api\";\nimport { Button, IconButton, Typography, withStyles } from \"@material-ui/core\";\nimport DownloadingCard from \"./DownloadingCard\";\nimport FinishedCard from \"./FinishedCard\";\nimport RemoteDownloadButton from \"../Dial/Aria2\";\nimport Auth from \"../../middleware/Auth\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport Nothing from \"../Placeholder/Nothing\";\n\nconst styles = (theme) => ({\n actions: {\n display: \"flex\",\n },\n title: {\n marginTop: \"20px\",\n },\n layout: {\n width: \"auto\",\n marginTop: \"30px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 700,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n shareTitle: {\n maxWidth: \"200px\",\n },\n avatarFile: {\n backgroundColor: theme.palette.primary.light,\n },\n avatarFolder: {\n backgroundColor: theme.palette.secondary.light,\n },\n gird: {\n marginTop: \"30px\",\n },\n hide: {\n display: \"none\",\n },\n loadingAnimation: {\n borderRadius: \"6px 6px 0 0\",\n },\n shareFix: {\n marginLeft: \"20px\",\n },\n loadMore: {\n textAlign: \"center\",\n marginTop: \"20px\",\n marginBottom: \"20px\",\n },\n margin: {\n marginTop: theme.spacing(2),\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass DownloadComponent extends Component {\n page = 0;\n interval = 0;\n previousDownloading = -1;\n\n state = {\n downloading: [],\n loading: false,\n finishedList: [],\n continue: true,\n };\n\n componentDidMount = () => {\n this.loadDownloading();\n };\n\n componentWillUnmount() {\n clearTimeout(this.interval);\n }\n\n loadDownloading = () => {\n this.setState({\n loading: true,\n });\n API.get(\"/aria2/downloading\")\n .then((response) => {\n this.setState({\n downloading: response.data,\n loading: false,\n });\n // 设定自动更新\n clearTimeout(this.interval);\n if (response.data.length > 0) {\n this.interval = setTimeout(\n this.loadDownloading,\n 1000 *\n response.data.reduce(function (prev, current) {\n return prev.interval < current.interval\n ? prev\n : current;\n }).interval\n );\n }\n\n // 下载中条目变更时刷新已完成列表\n if (response.data.length !== this.previousDownloading) {\n this.page = 0;\n this.setState({\n finishedList: [],\n continue: true,\n });\n this.loadMore();\n }\n this.previousDownloading = response.data.length;\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n };\n\n loadMore = () => {\n this.setState({\n loading: true,\n });\n API.get(\"/aria2/finished?page=\" + ++this.page)\n .then((response) => {\n this.setState({\n finishedList: [\n ...this.state.finishedList,\n ...response.data,\n ],\n loading: false,\n continue: response.data.length >= 10,\n });\n })\n .catch(() => {\n this.props.toggleSnackbar(\"top\", \"right\", \"加载失败\", \"error\");\n this.setState({\n loading: false,\n });\n });\n };\n\n render() {\n const { classes } = this.props;\n const user = Auth.GetUser();\n\n return (\n
\n {user.group.allowRemoteDownload && }\n \n 进行中\n \n \n \n \n {this.state.downloading.length === 0 && (\n \n )}\n {this.state.downloading.map((value, k) => (\n \n ))}\n \n 已完成\n \n
\n {this.state.finishedList.length === 0 && (\n \n )}\n {this.state.finishedList.map((value, k) => {\n if (value.files) {\n return ;\n }\n return null;\n })}\n \n 加载更多\n \n
\n
\n );\n }\n}\n\nconst Download = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(DownloadComponent));\n\nexport default Download;\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\n\nimport {\n withStyles,\n Button,\n Card,\n Divider,\n CardHeader,\n CardContent,\n CardActions,\n TextField,\n Avatar,\n} from \"@material-ui/core\";\nimport { withRouter } from \"react-router\";\nimport { formatLocalTime } from \"../../utils/datetime\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\n\nconst styles = (theme) => ({\n card: {\n maxWidth: 400,\n margin: \"0 auto\",\n },\n actions: {\n display: \"flex\",\n },\n layout: {\n width: \"auto\",\n marginTop: \"110px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n },\n continue: {\n marginLeft: \"auto\",\n marginRight: \"10px\",\n marginRottom: \"10px\",\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n };\n};\n\nclass LockedFileCompoment extends Component {\n constructor(props) {\n super(props);\n const query = new URLSearchParams(this.props.location.search);\n this.state = {\n pwd: query.get(\"password\"),\n };\n }\n\n handleChange = (name) => (event) => {\n this.setState({ [name]: event.target.value });\n };\n\n submit = (e) => {\n e.preventDefault();\n if (this.state.pwd === \"\") {\n return;\n }\n this.props.setPassowrd(this.state.pwd);\n };\n\n render() {\n const { classes } = this.props;\n\n return (\n
\n \n \n }\n title={this.props.share.creator.nick + \" 的加密分享\"}\n subheader={formatLocalTime(\n this.props.share.create_date,\n \"YYYY-MM-DD H:mm:ss\"\n )}\n />\n \n \n
\n \n \n
\n \n \n 继续\n \n \n
\n
\n );\n }\n}\n\nconst LockedFile = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(LockedFileCompoment)));\n\nexport default LockedFile;\n","import React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Avatar, Typography } from \"@material-ui/core\";\nimport { useHistory } from \"react-router\";\nimport Link from \"@material-ui/core/Link\";\nimport { formatLocalTime } from \"../../utils/datetime\";\n\nconst useStyles = makeStyles((theme) => ({\n boxHeader: {\n textAlign: \"center\",\n padding: 24,\n },\n avatar: {\n backgroundColor: theme.palette.secondary.main,\n margin: \"0 auto\",\n width: 50,\n height: 50,\n cursor: \"pointer\",\n },\n shareDes: {\n marginTop: 12,\n },\n shareInfo: {\n color: theme.palette.text.disabled,\n fontSize: 14,\n },\n}));\n\nexport default function Creator(props) {\n const classes = useStyles();\n const history = useHistory();\n\n const getSecondDes = () => {\n if (props.share.expire > 0) {\n if (props.share.expire >= 24 * 3600) {\n return (\n Math.round(props.share.expire / (24 * 3600)) + \" 天后到期\"\n );\n }\n return Math.round(props.share.expire / 3600) + \" 小时后到期\";\n }\n return formatLocalTime(props.share.create_date, \"YYYY-MM-DD H:mm:ss\");\n };\n\n const userProfile = () => {\n history.push(\"/profile/\" + props.share.creator.key);\n props.onClose && props.onClose();\n };\n\n return (\n
\n userProfile()}\n />\n \n {props.isFolder && (\n <>\n 此分享由{\" \"}\n userProfile()}\n href={\"javascript:void(0)\"}\n color=\"inherit\"\n >\n {props.share.creator.nick}\n {\" \"}\n 创建\n \n )}\n {!props.isFolder && (\n <>\n {\" \"}\n userProfile()}\n href={\"javascript:void(0)\"}\n color=\"inherit\"\n >\n {props.share.creator.nick}\n {\" \"}\n 向您分享了 1 个文件\n \n )}\n \n \n {props.share.views} 次浏览 • {props.share.downloads} 次下载 •{\" \"}\n {getSecondDes()}\n \n
\n );\n}\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { sizeToString, vhCheck } from \"../../utils\";\nimport { isPreviewable } from \"../../config\";\nimport { Button, Typography, withStyles } from \"@material-ui/core\";\nimport Divider from \"@material-ui/core/Divider\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport Auth from \"../../middleware/Auth\";\nimport PurchaseShareDialog from \"../Modals/PurchaseShare\";\nimport { withRouter } from \"react-router-dom\";\nimport Creator from \"./Creator\";\nimport pathHelper from \"../../utils/page\";\nimport Report from \"../Modals/Report\";\nimport {\n openMusicDialog,\n openResaveDialog,\n setSelectedTarget,\n showImgPreivew,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { startDownload } from \"../../redux/explorer/action\";\nimport { trySharePurchase } from \"../../redux/explorer/async\";\n\nvhCheck();\nconst styles = (theme) => ({\n layout: {\n width: \"auto\",\n marginTop: \"90px\",\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginTop: \"90px\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n marginTop: 0,\n marginLeft: 0,\n marginRight: 0,\n },\n justifyContent: \"center\",\n display: \"flex\",\n },\n player: {\n borderRadius: \"4px\",\n },\n fileCotainer: {\n width: \"200px\",\n margin: \"0 auto\",\n },\n buttonCotainer: {\n width: \"400px\",\n margin: \"0 auto\",\n textAlign: \"center\",\n marginTop: \"20px\",\n },\n paper: {\n padding: theme.spacing(2),\n },\n icon: {\n borderRadius: \"10%\",\n marginTop: 2,\n },\n\n box: {\n width: \"100%\",\n maxWidth: 440,\n backgroundColor: theme.palette.background.paper,\n borderRadius: 12,\n boxShadow: \"0 8px 16px rgba(29,39,55,.25)\",\n [theme.breakpoints.down(\"sm\")]: {\n height: \"calc(var(--vh, 100vh) - 56px)\",\n borderRadius: 0,\n maxWidth: 1000,\n },\n display: \"flex\",\n flexDirection: \"column\",\n },\n boxContent: {\n padding: 24,\n display: \"flex\",\n flex: \"1\",\n },\n fileName: {\n marginLeft: 20,\n },\n fileSize: {\n color: theme.palette.text.disabled,\n fontSize: 14,\n },\n boxFooter: {\n display: \"flex\",\n padding: \"20px 16px\",\n justifyContent: \"space-between\",\n },\n downloadButton: {\n marginLeft: 8,\n },\n});\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n openMusicDialog: () => {\n dispatch(openMusicDialog());\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n openResave: (key) => {\n dispatch(openResaveDialog(key));\n },\n startDownload: (share, file) => {\n dispatch(startDownload(share, file));\n },\n trySharePurchase: (share) => dispatch(trySharePurchase(share)),\n };\n};\n\nconst Modals = React.lazy(() => import(\"../FileManager/Modals\"));\nconst ImgPreview = React.lazy(() => import(\"../FileManager/ImgPreview\"));\n\nclass SharedFileCompoment extends Component {\n state = {\n anchorEl: null,\n open: false,\n purchaseCallback: null,\n loading: false,\n openReport: false,\n };\n\n downloaded = false;\n\n // TODO merge into react thunk\n preview = () => {\n if (pathHelper.isSharePage(this.props.location.pathname)) {\n const user = Auth.GetUser();\n if (!Auth.Check() && user && !user.group.shareDownload) {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"请先登录\",\n \"warning\"\n );\n return;\n }\n }\n\n switch (isPreviewable(this.props.share.source.name)) {\n case \"img\":\n this.props.showImgPreivew({\n key: this.props.share.key,\n name: this.props.share.source.name,\n });\n return;\n case \"msDoc\":\n this.props.history.push(\n this.props.share.key +\n \"/doc?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"audio\":\n this.props.setSelectedTarget([\n {\n key: this.props.share.key,\n type: \"share\",\n },\n ]);\n this.props.openMusicDialog();\n return;\n case \"video\":\n this.props.history.push(\n this.props.share.key +\n \"/video?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"edit\":\n this.props.history.push(\n this.props.share.key +\n \"/text?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"pdf\":\n this.props.history.push(\n this.props.share.key +\n \"/pdf?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"code\":\n this.props.history.push(\n this.props.share.key +\n \"/code?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n case \"epub\":\n this.props.history.push(\n this.props.share.key +\n \"/epub?name=\" +\n encodeURIComponent(this.props.share.source.name)\n );\n return;\n default:\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n \"此文件无法预览\",\n \"warning\"\n );\n return;\n }\n };\n\n scoreHandler = (callback) => (event) => {\n this.props.trySharePurchase(this.props.share).then(() => callback());\n };\n\n componentWillUnmount() {\n this.props.setSelectedTarget([]);\n }\n\n download = () => {\n this.props.startDownload(this.props.share, null);\n };\n\n render() {\n const { classes } = this.props;\n const user = Auth.GetUser();\n const isLogin = Auth.Check();\n\n return (\n
\n \n \n \n this.setState({ openReport: false })}\n />\n
\n \n \n
\n \n
\n \n {this.props.share.source.name}\n \n \n {sizeToString(this.props.share.source.size)}\n \n
\n
\n \n
\n
\n \n this.props.openResave(this.props.share.key)\n }\n color=\"secondary\"\n >\n 保存到我的文件\n \n \n this.setState({ openReport: true })\n }\n color=\"secondary\"\n >\n 举报\n \n
\n
\n {this.props.share.preview && (\n \n 预览\n \n )}\n \n 下载\n {this.props.share.score > 0 &&\n (!isLogin || !user.group.shareFree) &&\n \" (\" + this.props.share.score + \"积分)\"}\n {this.props.share.score > 0 &&\n isLogin &&\n user.group.shareFree &&\n \" (免积分)\"}\n \n
\n
\n
\n
\n );\n }\n}\n\nconst SharedFile = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(SharedFileCompoment)));\n\nexport default SharedFile;\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Typography, withStyles } from \"@material-ui/core\";\nimport { withRouter } from \"react-router-dom\";\nimport FileManager from \"../FileManager/FileManager\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Popover from \"@material-ui/core/Popover\";\nimport Creator from \"./Creator\";\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\nimport pathHelper from \"../../utils/page\";\nimport {\n openMusicDialog,\n openResaveDialog,\n setSelectedTarget,\n setShareUserPopover,\n showImgPreivew,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { setShareInfo } from \"../../redux/viewUpdate/action\";\n\nconst styles = (theme) => ({\n layout: {\n width: \"auto\",\n marginTop: 30,\n marginBottom: 30,\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(1100 + theme.spacing(3) * 2)]: {\n width: 1100,\n marginLeft: \"auto\",\n marginRight: \"auto\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n marginTop: theme.spacing(2),\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n },\n },\n managerContainer: {\n overflowY: \"auto\",\n },\n});\n\nconst ReadMe = React.lazy(() => import(\"./ReadMe\"));\n\nconst mapStateToProps = (state) => {\n return {\n anchorEl: state.viewUpdate.shareUserPopoverAnchorEl,\n fileList: state.explorer.fileList,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n toggleSnackbar: (vertical, horizontal, msg, color) => {\n dispatch(toggleSnackbar(vertical, horizontal, msg, color));\n },\n openMusicDialog: () => {\n dispatch(openMusicDialog());\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n showImgPreivew: (first) => {\n dispatch(showImgPreivew(first));\n },\n openResave: (key) => {\n dispatch(openResaveDialog(key));\n },\n setShareUserPopover: (e) => {\n dispatch(setShareUserPopover(e));\n },\n setShareInfo: (s) => {\n dispatch(setShareInfo(s));\n },\n };\n};\n\nclass SharedFolderComponent extends Component {\n state = {};\n\n UNSAFE_componentWillMount() {\n this.props.setShareInfo(this.props.share);\n }\n\n componentWillUnmount() {\n this.props.setShareInfo(null);\n this.props.setSelectedTarget([]);\n }\n\n handleClickAway = (e) => {\n const ignore = e && e.clientY && e.clientY <= 64;\n if (!pathHelper.isMobile() && !ignore) {\n this.props.setSelectedTarget([]);\n }\n };\n\n render() {\n const { classes } = this.props;\n let readmeShowed = false;\n const id = this.props.anchorEl !== null ? \"simple-popover\" : undefined;\n\n return (\n
\n \n \n \n \n \n {/* eslint-disable-next-line */}\n {this.props.fileList.map((value) => {\n if (\n (value.name.toLowerCase() === \"readme.md\" ||\n value.name.toLowerCase() === \"readme.txt\") &&\n !readmeShowed\n ) {\n readmeShowed = true;\n return ;\n }\n })}\n this.props.setShareUserPopover(null)}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n \n this.props.setShareUserPopover(null)}\n share={this.props.share}\n />\n \n \n
\n );\n }\n}\n\nconst SharedFolder = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(SharedFolderComponent)));\n\nexport default SharedFolder;\n","import React, { Suspense, useCallback, useEffect, useState } from \"react\";\nimport PageLoading from \"../Placeholder/PageLoading\";\nimport { useParams } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\nimport { useDispatch } from \"react-redux\";\nimport Notice from \"./NotFound\";\nimport LockedFile from \"./LockedFile\";\nimport SharedFile from \"./SharedFile\";\nimport SharedFolder from \"./SharedFolder\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\n\nexport default function SharePreload() {\n const dispatch = useDispatch();\n const { id } = useParams();\n\n const [share, setShare] = useState(undefined);\n const [loading, setLoading] = useState(false);\n const [password, setPassword] = useState(\"\");\n\n const SetSubTitle = useCallback(\n (title) => dispatch(changeSubTitle(title)),\n [dispatch]\n );\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n if (share) {\n if (share.locked) {\n SetSubTitle(share.creator.nick + \"的加密分享\");\n if (password !== \"\") {\n ToggleSnackbar(\"top\", \"right\", \"密码不正确\", \"warning\");\n }\n } else {\n SetSubTitle(share.source.name);\n }\n } else {\n SetSubTitle();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [share, SetSubTitle, ToggleSnackbar]);\n\n useEffect(() => {\n return () => {\n SetSubTitle();\n };\n // eslint-disable-next-line\n }, []);\n\n useEffect(() => {\n setLoading(true);\n let withPassword = \"\";\n if (password !== \"\") {\n withPassword = \"?password=\" + password;\n }\n API.get(\"/share/info/\" + id + withPassword)\n .then((response) => {\n setShare(response.data);\n setLoading(false);\n })\n .catch((error) => {\n setLoading(false);\n if (error.code === 404) {\n setShare(null);\n } else {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n }\n });\n }, [id, password, ToggleSnackbar]);\n\n return (\n }>\n {share === undefined && }\n {share === null && }\n {share && share.locked && (\n \n )}\n {share && !share.locked && !share.is_dir && (\n \n )}\n {share && !share.locked && share.is_dir && (\n \n )}\n \n );\n}\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { useLocation, useParams, useRouteMatch } from \"react-router\";\nimport API from \"../../middleware/Api\";\nimport { useDispatch } from \"react-redux\";\nimport pathHelper from \"../../utils/page\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport UseFileSubTitle from \"../../hooks/fileSubtitle\";\n\nconst useStyles = makeStyles(() => ({\n layout: {\n width: \"auto\",\n },\n\n container: {\n border: \"none\",\n width: \"100%\",\n height: \"calc(100vh - 64px)\",\n marginBottom: -10,\n },\n}));\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport default function DocViewer() {\n const [url, setURL] = useState(\"\");\n const math = useRouteMatch();\n const location = useLocation();\n const query = useQuery();\n const { id } = useParams();\n UseFileSubTitle(query, math, location);\n\n const dispatch = useDispatch();\n\n const ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\n\n useEffect(() => {\n let requestURL = \"/file/doc/\" + query.get(\"id\");\n if (pathHelper.isSharePage(location.pathname)) {\n requestURL = \"/share/doc/\" + id;\n if (query.get(\"share_path\") !== \"\") {\n requestURL +=\n \"?path=\" + encodeURIComponent(query.get(\"share_path\"));\n }\n }\n API.get(requestURL)\n .then((response) => {\n setURL(response.data);\n })\n .catch((error) => {\n ToggleSnackbar(\"top\", \"right\", error.message, \"error\");\n });\n // eslint-disable-next-line\n }, [math.params[0], location]);\n\n const classes = useStyles();\n return (\n
\n {url !== \"\" && (\n