{"version":3,"sources":["hooks/fileSubtitle.js","redux/explorer/reducer.ts","middleware/Api.ts","component/Placeholder/TextLoading.js","component/Dial/AutoHidden.js","services/navigate.ts","services/file.ts","utils/page.ts","component/Uploader/core/utils/pool.ts","component/Uploader/core/utils/validator.ts","component/Uploader/core/utils/request.ts","redux/explorer/index.ts","middleware/Auth.ts","component/Navbar/DarkModeSwitcher.js","component/FileManager/Navigator/SubActions.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/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/Navbar/UserAvatarPopover.js","component/Navbar/UserAvatar.js","component/Navbar/Navbar.js","component/Navbar/SearchBar.js","component/Navbar/StorageBar.js","component/Uploader/core/utils/helper.ts","component/Uploader/core/utils/index.ts","component/Navbar/UserInfo.js","component/Navbar/FileTags.js","component/FileManager/ImgPreview.js","utils/zip.js","utils/api.ts","redux/explorer/async.ts","redux/explorer/action.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","config.ts","utils/datetime.js","component/FileManager/TypeIcon.js","component/Placeholder/Nothing.js","serviceWorker.js","middleware/AuthRoute.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/SmallIcon.js","component/FileManager/FileIcon.js","component/FileManager/Folder.js","component/FileManager/DnD/Preview.js","component/FileManager/DnD/DragLayer.js","component/FileManager/ContextMenu.js","component/FileManager/TableRow.js","component/FileManager/DnD/DropWarpper.js","component/FileManager/ObjectIcon.js","component/FileManager/Explorer.js","component/FileManager/Navigator/PathButton.js","component/FileManager/Navigator/DropDownItem.js","component/FileManager/Navigator/DropDown.js","component/FileManager/Navigator/Navigator.js","component/Placeholder/ListLoading.js","component/FileManager/Sidebar/SideDrawer.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/Placeholder/PageLoading.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/Modals/CreateWebDAVAccount.js","component/Setting/WebDAV.js","component/Setting/Tasks.js","component/Setting/Profile.js","component/Setting/Authn.js","component/Modals/TimeZone.js","component/Setting/UserSetting.js","component/Login/Register.js","component/Login/Activication.js","component/Login/ResetForm.js","component/Login/Reset.js","component/FileManager/MusicPlayer.js","App.js","middleware/Init.js","redux/viewUpdate/reducer.ts","reducers/index.js","component/Placeholder/ErrorBoundary.js","index.js","redux/combineReducers.ts","redux/viewUpdate/action.ts","component/FileManager/PathSelector.js"],"names":["UseFileSubTitle","query","math","location","dispatch","useDispatch","useState","title","setTitle","path","setPath","SetSubTitle","useCallback","changeSubTitle","useEffect","pathHelper","isSharePage","pathname","get","split","length","params","initState","dndSignal","dndTarget","dndSource","fileList","dirList","selected","selectProps","isMultiple","withFolder","withFile","lastSelect","file","id","name","size","type","date","create_date","index","shiftSelectedIds","imgPreview","first","other","audioPreview","playingName","paused","isOpen","keywords","fileSave","sideBarOpen","checkSelectedProps","forEach","value","explorer","state","action","Object","assign","target","source","list","addedSelected","targets","newSelected","fileIds","filteredSelected","filter","includes","open","currentPolicy","policy","baseURL","getBaseURL","getPreviewURL","isShare","shareID","fileID","encodeURIComponent","instance","axios","create","withCredentials","AppError","message","code","error","stack","Error","interceptors","response","use","rawData","data","undefined","Auth","signout","window","href","msg","Promise","reject","useStyles","makeStyles","theme","loader","width","padding","breakpoints","down","MyLoader","props","backgroundColor","dark","foregroundColor","className","TextLoading","useTheme","classes","palette","AutoHidden","children","enable","hide","hidden","setHidden","prev","scrollY","lastUpdate","addEventListener","e","currentTarget","handleNavigation","in","share","a","apiURL","key","API","getDownloadURL","reqURL","downloadPath","put","statusHelper","isHomePage","startsWith","isAdminPage","isLoginPage","isMobile","innerWidth","Pool","limit","queue","processing","uploader","resolve","push","check","item","this","v","findIndex","task","dst","ProcessingTaskDuplicatedError","release","run","then","err","processingNum","availableNum","slice","checkers","allowedSuffix","ext","pop","FileValidateError","maxSize","validate","c","CancelToken","baseConfig","transformResponse","JSON","parse","TransformResponseError","cdBackendConfig","request","url","config","catch","isCancel","RequestCanceledError","HTTPError","requestAPI","actions","reducers","setNavigator","navigatorLoading","navigateTo","getState","navigator","navigateUp","pathSplit","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","openGetSourceDialog","openCopyDialog","openLoadingDialog","text","closeAllModals","toggleSnackbar","vertical","horizontal","color","setModalsLoading","refreshFileList","searchMyFile","showImgPreivew","showAudioPreview","audioPreviewSetIsOpen","audioPreviewSetPlaying","refreshStorage","saveFile","setSiteConfig","isAuthenticated","authenticate","cb","SetUser","GetUser","localStorage","getItem","newUser","setItem","stringify","Check","anonymous","oldUser","SetPreference","preference","GetPreference","GetPreferenceWithDefault","defaultVal","icon","opacity","DarkModeSwitcher","position","ThemeType","useSelector","siteConfig","ToggleThemeMode","isDayLight","isDark","placement","classNames","onClick","sideButton","marginRight","sortOptions","SubActions","isSmall","inherit","viewMethod","viewUpdate","explorerViewMethod","OpenLoadingDialog","ChangeSortMethod","changeSortMethod","SetShareUserPopover","anchorSort","setAnchorSort","selectedIndex","setSelectedIndex","toggleViewMethod","newMethod","fontSize","anchorEl","Boolean","onClose","map","option","event","0","1","2","3","4","5","6","7","handleMenuItemClick","creator","nick","style","height","src","fab","margin","top","right","bottom","left","zIndex","badge","fabProgress","green","wrapper","spacing","buttonSuccess","SaveButton","buttonClassname","clsx","disabled","aria-label","avatar","blue","loadingContainer","display","loading","marginTop","marginLeft","LoadingDialog","modals","loadingText","Dialog","aria-labelledby","DialogContent","DialogContentText","CircularProgress","contentFix","buttonProgress","secondary","light","CopyDialog","selectedPath","setSelectedPath","selectedPathName","setSelectedPathName","ToggleSnackbar","SetModalsLoading","RefreshFileList","DialogTitle","PathSelector","presentPath","onSelect","folder","DialogActions","Button","preventDefault","dirs","items","post","src_dir","modalsLoading","widthAnimation","shareUrl","minWidth","flexCenter","alignItems","noFlex","scoreCalc","ExpansionPanel","withStyles","root","border","boxShadow","borderBottom","expanded","MuiExpansionPanel","ExpansionPanelSummary","content","MuiExpansionPanelSummary","ExpansionPanelDetails","background","default","MuiExpansionPanelDetails","CreatShare","React","setExpanded","shareURL","setShareURL","password","downloads","expires","showPassword","values","setValues","expire","preview","shareOption","setShareOption","handleChange","prop","handleExpand","panel","isExpanded","handleCheck","setTimeout","maxWidth","fullWidth","Divider","List","onChange","aria-controls","ListItem","button","ListItemIcon","ListItemText","primary","ListItemSecondaryAction","Checkbox","checked","FormControl","variant","InputLabel","htmlFor","OutlinedInput","endAdornment","InputAdornment","Tooltip","IconButton","Math","random","toString","substr","edge","onMouseDown","on","onIcon","Visibility","offIcon","VisibilityOff","labelWidth","Select","labelId","MenuItem","Typography","TextField","onFocus","select","autoFocus","inputProps","readonly","label","clipboard","writeText","submitFormBody","is_dir","DecompressDialog","filePath","CompressDialog","fileName","setFileName","OptionSelector","dividers","component","options","o","callback","description","ModalsCompoment","newFolderName","newFileName","newName","secretShare","sharePwd","downloadURL","remoteDownloadPathSelect","purchaseCallback","handleInputChange","setState","newNameSuffix","UNSAFE_componentWillReceiveProps","nextProps","dndSignale","modalsStatus","rename","getSource","dragMove","scoreHandler","Download","downloaded","submitRemove","delete","submitMove","patch","DragSelectedPath","doMove","submitRename","new_name","submitCreateNewFolder","submitCreateNewFile","submitTorrentDownload","submitDownload","setMoveTarget","remoteDownloadNext","onSubmit","createNewFolder","createNewFile","copy","move","remove","music","controls","remoteDownload","placeholder","torrentDownload","decompress","compress","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","hex2bin","hex","parseInt","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","setLoading","useRouteMatch","$vm","createRef","useLocation","URLSearchParams","search","useParams","requestURL","responseType","textdata","Buffer","toBase64","reader","FileReader","readAsDataURL","onload","onerror","save","addImg","$file","current","$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","control","Array","Set","keys","k","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","handleClose","anchorOrigin","autoHideDuration","AlertBar","UserAvatarPopoverCompoment","openURL","sigOut","reload","user","Popover","transformOrigin","visitorMenu","header","largeAvatarContainer","Avatar","largeAvatar","noWrap","nickname","user_name","Chip","group","UserAvatarPopover","userPopoverAnchorEl","UserAvatarCompoment","showUserInfo","returnHome","loginCheck","isLogin","mobileHidden","Grow","Home","UserAvatar","NavbarCompoment","handleDrawerToggle","mobileOpen","openDownload","startDownload","shareInfo","archiveDownload","startBatchDownload","signOut","finally","UploaderRef","unlisten","listen","drawer","upDrawer","minStickDrawer","iconFix","webdav","process","browser","test","appBar","menuButton","handleDesktopToggle","desktopOpen","menuButtonDesktop","menuIcon","setSelectedTarget","subTitle","grow","sectionForFile","isPreviewable","openPreview","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","input","cancelSuggest","searchIcon","inputRoot","inputInput","onBlur","suggestBox","TransitionProps","timeout","square","SearchBar","shape","fade","common","white","pointerEvents","paddingTop","paddingRight","paddingBottom","StorageBarCompoment","percent","used","total","showExpand","firstLoad","componentDidMount","updateStatus","refresh","onMouseEnter","onMouseLeave","storageContainer","detail","bar","StorageBar","storageRefresh","textFix","overflow","textOverflow","getChunks","chunkByteSize","chunks","count","ceil","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","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","NavigateTo","onSuccess","tag","newTags","iconVideo","iconImg","iconAudio","iconDoc","expression","IconComponent","getIcon","ImagPreviewComponent","photoIndex","firstOne","newImg","intro","fileType","toLowerCase","imgPreviewSuffix","images","visible","onIndexChange","n","ImgPreivew","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","set","writeFooter","footer","indexFilename","setUint8","zipObj","read","done","outputData","append","stream","getReader","ReadableStream","start","pull","getPreviewPath","walk","f","objects","subs","askForOption","dialog","setOptionModal","setFileList","setDirList","setSortMethod","setSideBar","setCurrentPolicy","removeSelectedTargets","addSelectedTargets","setLastSelect","setShiftSelectedIds","sortMethodFuncs","sizePos","b","sizeRes","namePos","localeCompare","languages","numeric","ignorePunctuation","nameRev","timePos","timeRev","modifyTimePos","modifyTimeRev","updateFileList","sortMethod","x","sortFunc","sort","toggleObjectInfoSidebar","closeContextMenu","serverSideBatchDownload","router","postBody","shareDownload","allowArchiveDownload","fileStream","streamSaver","createWriteStream","readableZipStream","previewPath","fetch","cache","WritableStream","pipeTo","getViewerURL","viewer","openViewer","selectFile","fileIndex","ctrlKey","metaKey","shiftKey","isMacbook","begin","min","end","max","newShiftSelected","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","local","remote","qiniu","oss","onedrive","s3","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","p","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","cos","upyun","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","taskHover","setTaskHover","startLoadedRef","useRef","setProgress","durationTotal","resAvg","speed","speedAvg","retry","useUpload","fullScreen","useMediaQuery","statusText","parent","useSpeedAvg","displayedSpeed","getSpeedText","resumeLabel","continueLabel","progressBar","lighten","darken","taskDetail","u","stopRipple","stopPropagation","show","secondaryAction","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","maxHeight","virtualList","expandIcon","shortest","expandIconExpanded","sorters","reverse","filters","ongoing","TaskList","taskList","setUploaders","setAnchorEl","reason","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","msDocPreviewSuffix","subtitleSuffix","audioPreviewSuffix","videoPreviewSuffix","pdfPreviewSuffix","editSuffix","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","policyTypeMap","isTorrent","isCompressFile","taskStatus","taskType","taskProgress","getTaskStatus","getTaskType","getTaskProgress","dayjs","extend","utc","timezone","preferTimeZone","timeZone","refreshTimeZone","formatLocalTime","time","format","tz","validateTimeZone","AudioIcon","VideoIcon","ImageIcon","PdfIcon","FileWordBox","FilePowerpointBox","FileExcelBox","ScriptText","MagnetOn","ZipBox","WindowRestore","Android","FileShowIcon","LanguagePhp","LanguageGo","LanguagePython","LanguageC","LanguageCpp","LanguageJavascript","fileSuffix","getColor","getColorValue","iconClassName","emptyContainer","emptyInfoBig","emptyInfoSmall","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","isLocalhost","hostname","AuthRoute","rest","render","to","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","authn","ApplyThemes","SetSessionStatus","afterLogin","Paper","login","userName","Password","credentials","credentialRequestOptions","publicKey","challenge","allowCredentials","listItem","assertion","authData","authenticatorData","clientDataJSON","rawId","sig","signature","userHandle","Fingerprint","VpnKey","SmallIconCompoment","nextState","nextContext","isSelectedCurrent","isSelectedNext","isSelected","ButtonBase","focusRipple","notSelected","onIconClick","iconSelected","iconNotSelected","Folder","checkIcon","folderName","folderNameSelected","folderNameNotSelected","SmallIcon","boxSizing","FileIconCompoment","showPicIcon","pic","picPreview","noDrag","afterLoad","beforeLoad","loadingAnimation","previewIcon","iconBig","fileInfo","shareFix","FileIcon","objectFit","userDrag","active","isActive","dragging","cardDragged","diliverIcon","object","Preview","card","layerStyles","getItemStyles","initialOffset","currentOffset","pointerOffset","WebkitTransform","CustomDragLayer","useDragLayer","monitor","itemType","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getInitialClientOffset","isDragging","StyledListItemIcon","ContextMenuCompoment","X","Y","setPoint","clientY","clientX","openArchiveDownload","enterFolder","renderMenuItems","visibleCount","condition","allowRemoteDownload","menuOpen","anchorReference","anchorPosition","source_enabled","Unarchive","Archive","InfoOutlined","propover","ContextMenu","contextType","contextOpen","TableRowCompoment","tableIcon","TableRow","pref","onContextMenu","contextMenu","handleClick","onDoubleClick","handleDoubleClick","selectedShared","TableCell","dref","scope","tableRow","hideAuto","TableItem","hover","userSelect","FolderDropWarpper","isListView","useDrop","accept","drop","collect","isOver","canDrop","fixFlex","ObjectIcon","navigatorPath","SetSelectedTarget","NavitateTo","DragAndDrop","OpenPreview","StartDownload","SelectFile","handleIconClick","useDrag","dropResult","getDropResult","canDrag","drag","getEmptyImage","captureDraggingState","ExplorerCompoment","ClickAway","dataset","clickaway","DELETE_FILE","SELECT_ALL","DESELECT_ALL","away","showView","listView","Table","TableHead","TableSortLabel","changeSort","visuallyHidden","TableBody","normalView","flexFix","data-clickAway","typeHeader","gridContainer","gridItem","rootTable","rootShare","navigatorError","errorBox","errorMsg","navigatorErrorMsg","Explorer","drawerDesktopOpen","navigateToPath","upButton","clickAway","clip","gridTemplateColumns","expandMore","textTransform","PathButton","inputRef","more","last","DropDownItem","setActiveStatus","DropDown","timer","clearTimeout","shouldClose","element","NavigatorComponent","currentID","hiddenFolders","hiddenMode","anchorHidden","URL","searchParams","renderPath","onpopstate","max_size","file_type","checkOverFlow","redresh","componentDidUpdate","prevProps","prevStates","ms","force","overflowInitLock","hasOverflowingChildren","offsetHeight","scrollHeight","offsetWidth","scrollWidth","showHiddenPath","performAction","newTarget","presentFolderMenu","disableAutoFocusItem","roundBorder","navigatorContainer","nav","rightIcon","optionContainer","Navigator","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","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","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","page","setPage","setTotal","shareList","setShareList","orderBy","setOrderBy","order","sm","Card","CardHeader","subheader","Pagination","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","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","PageLoading","LockedFileCompoment","setPassowrd","LockedFile","marginRottom","boxHeader","cursor","shareDes","Creator","userProfile","views","ImgPreview","SharedFileCompoment","trySharePurchase","scoreHandle","download","box","boxContent","fileSize","boxFooter","actionLeft","downloadButton","SharedFile","openResave","fileCotainer","buttonCotainer","ReadMe","SharedFolderComponent","handleClickAway","readmeShowed","ClickAwayListener","onClickAway","managerContainer","SharedFolder","shareUserPopoverAnchorEl","SharePreload","setShare","setPassword","locked","withPassword","DocViewer","setURL","formGroup","formIcon","CreateWebDAVAccount","setValue","pathSelectDialog","setPathSelectDialog","formContainer","LabelOutlined","FolderOpenOutlined","cardContent","tableContainer","WebDAV","tab","setTab","setCreate","accounts","setAccounts","account","ID","CreatedAt","Name","Root","Tabs","indicatorColor","textColor","newValue","Tab","Alert","severity","origin","TableContainer","align","accountCopy","deleteAccount","Tasks","setTasks","nowrap","getError","ProfileCompoment","listType","loadNext","loadPrev","avatarContainer","centered","infoContainer","md","infoItem","mobileHide","th","tableLink","Profile","backgroundPosition","borderRaidus","pageInfo","sectionTitle","desenList","flexContainer","Authn","setSelected","confirm","setConfirm","deleteCredential","fingerprint","credentialCreationOptions","excludeCredentials","attestationObject","add","TimeZoneDialog","timeZoneValue","setTimeZoneValue","UserSettingCompoment","avatarModal","nickModal","changePassword","oldPwd","webdavPwd","newPwdRepeat","twoFactor","authCode","changeTheme","chosenTheme","showWebDavUrl","showWebDavUserName","changeWebDavPwd","groupBackModal","changePolicy","changeTimeZone","settings","uid","group_expires","qq","homepage","two_factor","two_fa_secret","prefer_theme","themes","changeView","loadSetting","useGravatar","changeNick","uploadAvatar","formData","handleToggle","changhePwd","old","new","changheWebdavPwd","init2FA","handleAlignment","toggleThemeMode","ListItemAvatar","infoTextWithIcon","rightIconWithText","infoText","Switch","firstColor","secondColor","Brightness3","ListAlt","Schedule","GitHub","uploadFromFile","userGravatar","paddingText","textField","flexContainerResponse","qrcode","desText","ToggleButtonGroup","exclusive","ToggleButton","themeBlock","UserSetting","yellow","policySelected","avatarSuccess","Register","password_repeat","setInput","emailActive","setEmailActive","regCaptcha","Activation","setSuccess","ResetForm","secret","Reset","forgetCaptcha","MusicPlayerComponent","currentIndex","currentTime","progressText","looptype","myAudioRef","newItem","handleItemClick","backgroundPlay","bindEvents","ele","readyPlay","loopnext","timeUpdate","unbindEvents","removeEventListener","play","formatTime","s","isNaN","minute","second","playOrPaues","isPlay","changeLoopType","lt","handleProgress","idx","Slider","slider_root","justify","Repeat","RepeatOne","Shuffle","MusicPlayer","PDFViewer","App","themeConfig","prefersDarkMode","prefer","createMuiTheme","Fragment","ThemeProvider","CssBaseline","exact","Text","Code","initUserConfig","store","defaultTheme","preferListMethod","share_view_method","home_view_method","resave","doNavigate","currntPath","defaultStatus","rawStore","configCache","InitSiteConfig","QQLogin","black","contrastText","hint","bgSelected","emptyIcon","ErrorBoundary","hasError","errorInfo","componentStack","Admin","hash","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","setSubtitle","PathSelectorCompoment","selectedTarget","toBeLoad","back","paths","api","unshift","handleSelect","selector","primaryTypographyProps","buttonIcon","iconWhite"],"mappings":"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","file":"static/js/main.22520c9b.chunk.js","sourcesContent":["import { useDispatch } from \"react-redux\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { changeSubTitle } from \"../redux/viewUpdate/action\";\nimport pathHelper from \"../utils/page\";\n\nexport default function UseFileSubTitle(query, math, location) {\n const dispatch = useDispatch();\n const [title, setTitle] = useState(\"\");\n const [path, setPath] = useState(\"\");\n const SetSubTitle = useCallback(\n (title) => dispatch(changeSubTitle(title)),\n [dispatch]\n );\n\n useEffect(() => {\n if (!pathHelper.isSharePage(location.pathname)) {\n const path = query.get(\"p\").split(\"/\");\n setPath(query.get(\"p\"));\n SetSubTitle(path[path.length - 1]);\n setTitle(path[path.length - 1]);\n } else {\n SetSubTitle(query.get(\"name\"));\n setTitle(query.get(\"name\"));\n setPath(query.get(\"share_path\"));\n }\n // eslint-disable-next-line\n }, [math.params[0], location]);\n\n return { title, path };\n}\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}\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 keywords: string;\n fileSave: boolean;\n sideBarOpen: boolean;\n currentPolicy?: Policy;\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 },\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 keywords: \"\",\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 selected.forEach((value) => {\n if (value.type === \"dir\") {\n withFolder = true;\n } else if (value.type === \"file\") {\n withFile = true;\n }\n });\n return {\n isMultiple,\n withFolder,\n withFile,\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 },\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 },\n keywords: action.keywords,\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 },\n keywords: \"\",\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 default:\n return state;\n }\n};\n\nexport default explorer;\n","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 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 }) {\n const [hidden, setHidden] = useState(false);\n\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\n if (prev > window.scrollY) {\n if (lastUpdate - window.scrollY > show) {\n lastUpdate = window.scrollY;\n setHidden(false);\n }\n } else if (prev < window.scrollY) {\n if (window.scrollY - lastUpdate > show) {\n lastUpdate = window.scrollY;\n setHidden(true);\n }\n }\n prev = window.scrollY;\n };\n if (enable) {\n window.addEventListener(\"scroll\", (e) => handleNavigation(e));\n }\n // eslint-disable-next-line\n }, [enable]);\n\n return {children};\n}\n\nexport default AutoHidden;\n","import API from \"../middleware/Api\";\n\nexport async function list(\n path: string,\n share: any,\n keywords: string\n): Promise {\n const apiURL = share\n ? \"/share/list/\" + share.key\n : keywords === \"\"\n ? \"/directory\"\n : \"/file/search/\";\n path = keywords === \"\" ? path : keywords;\n return API.get(apiURL + encodeURIComponent(path));\n}\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","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 = this.limit - processingNum;\n this.queue.slice(0, availableNum).forEach((item) => {\n this.run(item);\n });\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","import * as actions from \"./action\";\nimport * as reducers from \"./reducer\";\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 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 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 = () => {\n return {\n type: \"OPEN_GET_SOURCE_DIALOG\",\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) => {\n return {\n type: \"SEARCH_MY_FILE\",\n keywords: keywords,\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","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 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, 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 Avatar from \"@material-ui/core/Avatar\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Auth from \"../../../middleware/Auth\";\nimport { changeViewMethod, setShareUserPopover } from \"../../../redux/explorer\";\nimport { changeSortMethod } from \"../../../redux/explorer/action\";\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\nexport default function SubActions({ isSmall, share, inherit }) {\n const dispatch = useDispatch();\n const viewMethod = useSelector(\n (state) => state.viewUpdate.explorerViewMethod\n );\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 SetShareUserPopover = useCallback(\n (e) => dispatch(setShareUserPopover(e)),\n [dispatch]\n );\n const [anchorSort, setAnchorSort] = useState(null);\n const [selectedIndex, setSelectedIndex] = useState(0);\n const showSortOptions = (e) => {\n setAnchorSort(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\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\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 \n \n \n setAnchorSort(null)}\n >\n {sortOptions.map((option, index) => (\n handleMenuItemClick(event, index)}\n >\n {option}\n \n ))}\n \n {share && (\n SetShareUserPopover(e.currentTarget)}\n style={{ padding: 5 }}\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 } 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 { toggleSnackbar } from \"../../redux/explorer\";\nimport { useDispatch } 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 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\";\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 [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 });\n const [shareOption, setShareOption] = React.useState({\n password: false,\n expire: 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 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 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 navigator.share({\n title: props.selected[0].name,\n url: shareURL,\n });\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 preview: shareOption.preview,\n };\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 });\n setShareOption({\n password: false,\n expire: 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 \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\";\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\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 API.post(\"/file/decompress\", {\n src: filePath(props.selected[0]),\n dst: selectedPath === \"//\" ? \"/\" : selectedPath,\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 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\";\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 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 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/compress\", {\n src: {\n dirs: dirs,\n items: items,\n },\n name: fileName,\n dst: selectedPath === \"//\" ? \"/\" : selectedPath,\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 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 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 DecompressDialog from \"../Modals/Decompress\";\nimport CompressDialog from \"../Modals/Compress\";\nimport {\n closeAllModals,\n openLoadingDialog,\n refreshFileList,\n refreshStorage,\n setModalsLoading,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport OptionSelector from \"../Modals/OptionSelector\";\nimport { getDownloadURL } from \"../../services/file\";\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 source: \"\",\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 if (\n this.props.modalsStatus.getSource !==\n nextProps.modalsStatus.getSource &&\n nextProps.modalsStatus.getSource === true\n ) {\n API.get(\"/file/source/\" + this.props.selected[0].id)\n .then((response) => {\n this.setState({\n source: response.data.url,\n });\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n });\n }\n };\n\n scoreHandler = (callback) => {\n callback();\n };\n\n Download = () => {\n getDownloadURL(this.props.selected[0])\n .then((response) => {\n window.location.assign(response.data);\n this.onClose();\n this.downloaded = true;\n })\n .catch((error) => {\n this.props.toggleSnackbar(\n \"top\",\n \"right\",\n error.message,\n \"error\"\n );\n this.onClose();\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 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 // eslint-disable-next-line\n return;\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,\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 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 source: \"\",\n });\n this.newNameSuffix = \"\";\n this.props.closeAllModals();\n };\n\n handleChange = (name) => (event) => {\n this.setState({ [name]: event.target.checked });\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 \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\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 allowSharePreview = () => {\n if (!window.isSharePage) {\n return true;\n }\n if (window.isSharePage) {\n if (window.shareInfo.allowPreview) {\n return true;\n }\n if (window.userInfo.uid === -1) {\n return false;\n }\n return true;\n }\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 const decode = (c) => {\n let e = c.height,\n a = c.width,\n b = document.createElement(\"canvas\");\n b.height = e;\n b.width = a;\n b = b.getContext(\"2d\");\n b.drawImage(c, 0, 0);\n c = b.getImageData(0, 0, a, e);\n b = [];\n for (let d = 0; d < a * e * 4; d += 4)\n 0 !== (d + 4) % (4 * a) &&\n [].push.apply(b, [].slice.call(c.data, d, d + 3));\n c = e = 0;\n for (\n a = \"\";\n c < b.length &&\n (16 >= c ||\n (0 === b[c] % 2 ? (e++, (a += \"1\")) : ((e = 0), (a += \"0\")),\n 17 !== e));\n c++\n );\n a = a.slice(0, -16);\n a = a.replace(/[\\s]/g, \"\").replace(/(\\d{16})(?=\\d)/g, \"$1 \");\n e = \"\";\n a = a.split(\" \");\n for (c = 0; c < a.length; c++) {\n b = a[c];\n if (16 === b.length) {\n b = parseInt(b, 2);\n e += String.fromCharCode(b);\n }\n }\n return e;\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: 50,\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 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 = query.get(\"p\").split(\".\");\n setSuffix(codePreviewSuffix[extension.pop()]);\n // eslint-disable-next-line\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 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, index) => (\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 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 };\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.history.push(\"/signup\")}\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 { 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 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 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 searchMyFile,\n setSelectedTarget,\n setSessionStatus,\n showImgPreivew,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { startBatchDownload, startDownload } from \"../../redux/explorer/action\";\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 keywords: state.explorer.keywords,\n title: state.siteConfig.title,\n subTitle: state.viewUpdate.subTitle,\n loadUploader: state.viewUpdate.loadUploader,\n isLogin: state.viewUpdate.isLogin,\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 searchMyFile: (keywords) => {\n dispatch(searchMyFile(keywords));\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(window.shareInfo, this.props.selected[0]);\n };\n\n archiveDownload = () => {\n this.props.startBatchDownload(window.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 {user.group.webdav && (\n \n this.props.history.push(\"/webdav?\")\n }\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.history.push(\"/signup\")}\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 window.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 isHomePage &&\n pathHelper.isMobile() && }\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 withStyles,\n InputBase,\n Popper,\n Fade,\n Paper,\n MenuItem,\n ListItemIcon,\n ListItemText,\n Typography,\n} from \"@material-ui/core\";\nimport { withRouter } from \"react-router\";\nimport pathHelper from \"../../utils/page\";\nimport { HotKeys, configure } from \"react-hotkeys\";\nimport { searchMyFile } from \"../../redux/explorer\";\n\nconfigure({\n ignoreTags: [],\n});\n\nconst mapStateToProps = () => {\n return {};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n searchMyFile: (keywords) => {\n dispatch(searchMyFile(keywords));\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 = () => {\n this.props.searchMyFile(\"keywords/\" + this.input);\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 \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 { 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 \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 { 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 { 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, { useCallback, useState, Suspense } 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 Heart,\n HeartOutline,\n Hexagon,\n HexagonOutline,\n Hexagram,\n HexagramOutline,\n Rhombus,\n RhombusOutline,\n Square,\n SquareOutline,\n Triangle,\n TriangleOutline,\n FolderHeartOutline,\n TagPlus,\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) => dispatch(searchMyFile(k)), [\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 SearchMyFile(v.id + \"/internal\")}\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","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","/* 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(pathJoin([f.path, f.name]), share, \"\");\n const subs = await walk(response.data.objects, share);\n res = [...res, ...subs];\n }\n }\n\n return res;\n}\n","import { ThunkAction } from \"redux-thunk\";\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","import { AnyAction } from \"redux\";\nimport { ThunkAction } from \"redux-thunk\";\nimport { CloudreveFile, SortMethod } from \"./../../types/index\";\nimport { closeContextMenu } from \"../viewUpdate/action\";\nimport { Policy } from \"../../component/Uploader/core/types\";\nimport streamSaver from \"streamsaver\";\nimport \"../../utils/zip\";\nimport pathHelper from \"../../utils/page\";\nimport { 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 } from \"./async\";\nimport Auth from \"../../middleware/Auth\";\nimport { isPreviewable } from \"../../config\";\nimport { push } from \"connected-react-router\";\nimport {\n changeContextMenu,\n closeAllModals,\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 updateFileList = (\n list: CloudreveFile[]\n): ThunkAction => {\n return (dispatch, getState): void => {\n const state = getState();\n // TODO: define state type\n const { sortMethod } = 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 };\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.sort(sortFunc)));\n dispatch(setFileList(fileList.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 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 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 const {\n explorer: { selected },\n } = getState();\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 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 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 (\n shiftKey &&\n !ctrlKey &&\n !metaKey &&\n selected.length !== 0 &&\n // 点击类型一样\n file.type === lastSelect.file.type\n ) {\n // shift 多选\n // 取消原有选择\n dispatch(removeSelectedTargets(selected.map((v: any) => v.id)));\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 = list.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","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\";\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, 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 filter,\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 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 show = useMemo(() => filter(uploader), [filter, status, uploader]);\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 show && (\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}\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\", \"5\")\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\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 \n )}\n />\n );\n }, [classes, taskList, useAvgSpeed, fullScreen, filter, sorter]);\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 keywords = useSelector((state) => state.explorer.keywords);\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 () =>\n pathHelper.isHomePage(location.pathname) &&\n isLogin &&\n keywords === \"\",\n [location.pathname, isLogin, keywords]\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\", \"5\")\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","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\", \"flac\",\"m4a\"];\nexport const videoPreviewSuffix = [\"mp4\", \"mkv\", \"webm\", \"avi\", \"m3u8\", \"mov\"];\nexport const pdfPreviewSuffix = [\"pdf\"];\nexport const editSuffix = [\"md\", \"txt\"];\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\", \"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};\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 }\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 === \"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","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 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\";\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};\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","import React from \"react\";\nimport { PackageVariant } from \"mdi-material-ui\";\nimport { makeStyles } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) => ({\n emptyContainer: {\n bottom: \"0\",\n\n color: theme.palette.action.disabled,\n textAlign: \"center\",\n paddingTop: \"20px\",\n },\n emptyInfoBig: {\n fontSize: \"25px\",\n color: theme.palette.action.disabled,\n },\n emptyInfoSmall: {\n color: theme.palette.action.disabled,\n },\n}));\n\nexport default function Nothing({ primary, secondary, top = 20, size = 1 }) {\n const classes = useStyles();\n return (\n \n \n \n {primary}\n \n {secondary !== \"\" && (\n
{secondary}
\n )}\n \n );\n}\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 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 { Link, makeStyles } from \"@material-ui/core\";\nimport React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation } from \"react-router\";\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 title = useSelector((state) => state.siteConfig.title);\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 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\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 {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, { 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\";\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 {this.props.file.name}\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 {\n ButtonBase,\n Divider,\n fade,\n Tooltip,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport ContentLoader from \"react-content-loader\";\nimport { LazyLoadImage } from \"react-lazy-load-image-component\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router\";\nimport { baseURL } from \"../../middleware/Api\";\nimport pathHelper from \"../../utils/page\";\nimport TypeIcon from \"./TypeIcon\";\nimport CheckCircleRoundedIcon from \"@material-ui/icons/CheckCircleRounded\";\nimport statusHelper from \"../../utils/page\";\nimport Grow from \"@material-ui/core/Grow\";\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 };\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 {this.props.file.name}\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 {\n Divider,\n ListItemIcon,\n MenuItem,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport Menu from \"@material-ui/core/Menu\";\nimport { Archive, InfoOutlined, Unarchive } from \"@material-ui/icons\";\nimport RenameIcon from \"@material-ui/icons/BorderColor\";\nimport DownloadIcon from \"@material-ui/icons/CloudDownload\";\nimport UploadIcon from \"@material-ui/icons/CloudUpload\";\nimport NewFolderIcon from \"@material-ui/icons/CreateNewFolder\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport FileCopyIcon from \"@material-ui/icons/FileCopy\";\nimport OpenFolderIcon from \"@material-ui/icons/FolderOpen\";\nimport MoveIcon from \"@material-ui/icons/Input\";\nimport LinkIcon from \"@material-ui/icons/InsertLink\";\nimport OpenIcon from \"@material-ui/icons/OpenInNew\";\nimport ShareIcon from \"@material-ui/icons/Share\";\nimport { FolderUpload, MagnetOn, FilePlus } from \"mdi-material-ui\";\nimport PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport { isCompressFile, isPreviewable, isTorrent } from \"../../config\";\nimport Auth from \"../../middleware/Auth\";\nimport pathHelper from \"../../utils/page\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport {\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 openGetSourceDialog,\n openLoadingDialog,\n openMoveDialog,\n openMusicDialog,\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 path: state.navigator.path,\n selected: state.explorer.selected,\n keywords: state.explorer.keywords,\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 openGetSourceDialog: () => {\n dispatch(openGetSourceDialog());\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 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 };\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 {!this.props.isMultiple &&\n this.props.withFile &&\n isHomePage &&\n this.props.selected[0].source_enabled && (\n \n this.props.openGetSourceDialog()\n }\n >\n \n \n \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 {!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.keywords === \"\" && (\n \n this.props.openCopyDialog()\n }\n >\n \n \n \n \n 复制\n \n \n )}\n
\n )}\n {isHomePage && (\n
\n {this.props.keywords === \"\" && (\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, { 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\";\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 {this.props.file.name}\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 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\";\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 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 (props.file.type === \"dir\" && (!e.ctrlKey && !e.metaKey && !e.shiftKey)) {\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(window.shareInfo);\n };\n\n const handleIconClick = (e) => {\n e.stopPropagation();\n e.ctrlKey = true;\n SelectFile(e);\n return false;\n };\n\n const [{ isDragging }, drag, preview] = useDrag({\n item: {\n object: props.file,\n type: \"object\",\n selected: [...selected],\n viewMethod: viewMethod,\n },\n end: (item, monitor) => {\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 {\n CircularProgress,\n Grid,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport TableSortLabel from \"@material-ui/core/TableSortLabel\";\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\nimport React, { Component } from \"react\";\nimport { configure, GlobalHotKeys } from \"react-hotkeys\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport explorer, { changeContextMenu, navigateTo, navigateUp, openRemoveDialog, setSelectedTarget } from \"../../redux/explorer\";\nimport { isMac } from \"../../utils\";\nimport pathHelper from \"../../utils/page\";\nimport ContextMenu from \"./ContextMenu\";\nimport ImgPreivew from \"./ImgPreview\";\nimport ObjectIcon from \"./ObjectIcon\";\nimport Nothing from \"../Placeholder/Nothing\";\n\nconst styles = (theme) => ({\n paper: {\n padding: theme.spacing(2),\n textAlign: \"center\",\n color: theme.palette.text.secondary,\n margin: \"10px\",\n },\n root: {\n flexGrow: 1,\n padding: \"10px\",\n overflowY: \"auto\",\n height: \"calc(100vh - 113px)\",\n [theme.breakpoints.up(\"sm\")]: {\n overflowY: \"auto\",\n height: \"calc(100vh - 113px)\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n height: \"100%\",\n },\n },\n rootTable: {\n padding: \"0px\",\n backgroundColor: theme.palette.background.paper.white,\n [theme.breakpoints.up(\"sm\")]: {\n overflowY: \"auto\",\n height: \"calc(100vh - 113px)\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n height: \"100%\",\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: \"repeat(auto-fill,minmax(180px,1fr))\",\n },\n [theme.breakpoints.up(\"md\")]: {\n gridTemplateColumns: \"repeat(auto-fill,minmax(220px,1fr))\",\n },\n display: \"grid\",\n },\n gridItem: {\n flex: \"1 1 220px\",\n },\n});\n\nconst mapStateToProps = (state) => {\n return {\n path: state.navigator.path,\n drawerDesktopOpen: state.viewUpdate.open,\n viewMethod: state.viewUpdate.explorerViewMethod,\n sortMethod: state.viewUpdate.sortMethod,\n fileList: state.explorer.fileList,\n dirList: state.explorer.dirList,\n loading: state.viewUpdate.navigatorLoading,\n navigatorError: state.viewUpdate.navigatorError,\n navigatorErrorMsg: state.viewUpdate.navigatorErrorMsg,\n keywords: state.explorer.keywords,\n selected: state.explorer.selected,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n navigateToPath: (path) => {\n dispatch(navigateTo(path));\n },\n\n changeContextMenu: (type, open) => {\n dispatch(changeContextMenu(type, open));\n },\n navigateUp: () => {\n dispatch(navigateUp());\n },\n setSelectedTarget: (targets) => {\n dispatch(setSelectedTarget(targets));\n },\n openRemoveDialog: () => {\n dispatch(openRemoveDialog());\n },\n changeSort: (method) => {\n dispatch(explorer.actions.changeSortMethod(method));\n },\n };\n};\n\nclass ExplorerCompoment extends Component {\n constructor() {\n super();\n this.keyMap = {\n DELETE_FILE: \"del\",\n SELECT_ALL: `${isMac() ? \"command\" : \"ctrl\"}+a`,\n DESELECT_ALL: \"esc\",\n };\n\n this.handlers = {\n DELETE_FILE: () => {\n if (this.props.selected.length > 0 && !this.props.share) {\n this.props.openRemoveDialog();\n }\n },\n SELECT_ALL: (e) => {\n e.preventDefault();\n if (\n this.props.selected.length >=\n this.props.dirList.length + this.props.fileList.length\n ) {\n this.props.setSelectedTarget([]);\n } else {\n this.props.setSelectedTarget([\n ...this.props.dirList,\n ...this.props.fileList,\n ]);\n }\n },\n DESELECT_ALL: (e) => {\n e.preventDefault();\n this.props.setSelectedTarget([]);\n },\n };\n\n configure({\n ignoreTags: [\"input\", \"select\", \"textarea\"],\n });\n }\n\n contextMenu = (e) => {\n e.preventDefault();\n if (\n this.props.keywords === \"\" &&\n !pathHelper.isSharePage(this.props.location.pathname)\n ) {\n if (!this.props.loading) {\n this.props.changeContextMenu(\"empty\", true);\n }\n }\n };\n\n componentDidUpdate() {\n this.away = 0;\n }\n\n ClickAway = (e) => {\n const element = e.target;\n if (element.dataset.clickaway) {\n this.props.setSelectedTarget([]);\n }\n };\n\n render() {\n const { classes } = this.props;\n const isHomePage = pathHelper.isHomePage(this.props.location.pathname);\n\n const showView =\n !this.props.loading &&\n (this.props.dirList.length !== 0 ||\n this.props.fileList.length !== 0);\n const listView = (\n \n \n \n \n {\n this.props.changeSort(\n this.props.sortMethod === \"namePos\"\n ? \"nameRev\"\n : \"namePos\"\n );\n }}\n >\n 名称\n {this.props.sortMethod === \"namePos\" ||\n this.props.sortMethod === \"nameRev\" ? (\n \n {this.props.sortMethod === \"nameRev\"\n ? \"sorted descending\"\n : \"sorted ascending\"}\n \n ) : null}\n \n \n \n {\n this.props.changeSort(\n this.props.sortMethod === \"sizePos\"\n ? \"sizeRes\"\n : \"sizePos\"\n );\n }}\n >\n 大小\n {this.props.sortMethod === \"sizePos\" ||\n this.props.sortMethod === \"sizeRes\" ? (\n \n {this.props.sortMethod === \"sizeRes\"\n ? \"sorted descending\"\n : \"sorted ascending\"}\n \n ) : null}\n \n \n \n {\n this.props.changeSort(\n this.props.sortMethod ===\n \"modifyTimePos\"\n ? \"modifyTimeRev\"\n : \"modifyTimePos\"\n );\n }}\n >\n 修改日期\n {this.props.sortMethod === \"modifyTimePos\" ||\n this.props.sortMethod === \"modifyTimeRev\" ? (\n \n {this.props.sortMethod === \"sizeRes\"\n ? \"sorted descending\"\n : \"sorted ascending\"}\n \n ) : null}\n \n \n \n \n \n {pathHelper.isMobile() && this.props.path !== \"/\" && (\n \n )}\n {this.props.dirList.map((value, index) => (\n \n ))}\n {this.props.fileList.map((value, index) => (\n \n ))}\n \n
\n );\n\n const normalView = (\n
\n {this.props.dirList.length !== 0 && (\n <>\n \n 文件夹\n \n \n {this.props.dirList.map((value, index) => (\n \n \n \n ))}\n \n \n )}\n {this.props.fileList.length !== 0 && (\n <>\n \n 文件\n \n \n {this.props.fileList.map((value, index) => (\n \n \n \n ))}\n \n \n )}\n
\n );\n const view = this.props.viewMethod === \"list\" ? listView : normalView;\n return (\n \n \n \n \n {this.props.navigatorError && (\n \n \n :( 请求时出现错误\n \n \n {this.props.navigatorErrorMsg.message}\n \n \n )}\n\n {this.props.loading && !this.props.navigatorError && (\n
\n \n
\n )}\n\n {this.props.keywords === \"\" &&\n isHomePage &&\n this.props.dirList.length === 0 &&\n this.props.fileList.length === 0 &&\n !this.props.loading &&\n !this.props.navigatorError && (\n \n )}\n {((this.props.keywords !== \"\" &&\n this.props.dirList.length === 0 &&\n this.props.fileList.length === 0 &&\n !this.props.loading &&\n !this.props.navigatorError) ||\n (this.props.dirList.length === 0 &&\n this.props.fileList.length === 0 &&\n !this.props.loading &&\n !this.props.navigatorError &&\n !isHomePage)) && }\n {showView && view}\n \n );\n }\n}\n\nExplorerCompoment.propTypes = {\n classes: PropTypes.object.isRequired,\n path: PropTypes.string.isRequired,\n};\n\nconst Explorer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(withStyles(styles)(withRouter(ExplorerCompoment)));\n\nexport default Explorer;\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 \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 Avatar from \"@material-ui/core/Avatar\";\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 keywords: state.explorer.keywords,\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 height: \"49px\",\n overflow: \"hidden\",\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 keywords = \"\";\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(newPath, this.props.share, this.keywords)\n .then((response) => {\n this.currentID = response.data.parent;\n this.props.updateFileList(response.data.objects);\n this.props.setNavigatorLoadingStatus(false);\n if (this.keywords === \"\") {\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.keywords !== nextProps.keywords) {\n this.keywords = nextProps.keywords;\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.keywords === \"\" && 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 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 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 keywords = useSelector((state) => state.explorer.keywords);\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 (keywords !== \"\" ? \"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.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, { Component } from \"react\";\nimport { DndProvider } from \"react-dnd\";\nimport HTML5Backend from \"react-dnd-html5-backend\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\nimport { changeSubTitle } from \"../../redux/viewUpdate/action\";\nimport pathHelper from \"../../utils/page\";\nimport DragLayer from \"./DnD/DragLayer\";\nimport Explorer from \"./Explorer\";\nimport Modals from \"./Modals\";\nimport Navigator from \"./Navigator/Navigator\";\nimport SideDrawer from \"./Sidebar/SideDrawer\";\nimport { closeAllModals, navigateTo, setSelectedTarget, toggleSnackbar } from \"../../redux/explorer\";\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 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 render() {\n return (\n
\n \n \n \n \n \n \n \n
\n );\n }\n}\n\nFileManager.propTypes = {};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(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 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(basename(path), isShare ? { key: id } : null, \"\").then(\n (res) => {\n setFiles(\n res.data.objects.filter(\n (o) => o.type === \"file\"\n )\n );\n setPlaylist(\n res.data.objects.filter(\n (o) =>\n o.type === \"file\" &&\n videoPreviewSuffix.indexOf(\n o.name\n .split(\".\")\n .pop()\n .toLowerCase()\n ) !== -1\n )\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 ToggleSnackbar = useCallback(\n (vertical, horizontal, msg, color) =>\n dispatch(toggleSnackbar(vertical, horizontal, msg, color)),\n [dispatch]\n );\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 search = useCallback((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 {\n Card,\n CardContent,\n darken,\n IconButton,\n lighten,\n LinearProgress,\n makeStyles,\n Typography,\n useTheme,\n} from \"@material-ui/core\";\nimport Badge from \"@material-ui/core/Badge\";\nimport Button from \"@material-ui/core/Button\";\nimport Divider from \"@material-ui/core/Divider\";\nimport MuiExpansionPanel from \"@material-ui/core/ExpansionPanel\";\nimport MuiExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\nimport MuiExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\nimport Grid from \"@material-ui/core/Grid\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport { ExpandMore, HighlightOff } from \"@material-ui/icons\";\nimport PermMediaIcon from \"@material-ui/icons/PermMedia\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport TimeAgo from \"timeago-react\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport API from \"../../middleware/Api\";\nimport { hex2bin, sizeToString } from \"../../utils\";\nimport TypeIcon from \"../FileManager/TypeIcon\";\nimport SelectFileDialog from \"../Modals/SelectFile\";\nimport { useHistory } from \"react-router\";\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 getPercent = (completed, total) => {\n if (total === 0) {\n return 0;\n }\n return (completed / total) * 100;\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 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 { Button, IconButton, Typography, withStyles } from \"@material-ui/core\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\nimport React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { toggleSnackbar } from \"../../redux/explorer\";\nimport API from \"../../middleware/Api\";\nimport DownloadingCard from \"./DownloadingCard\";\nimport FinishedCard from \"./FinishedCard\";\nimport RemoteDownloadButton from \"../Dial/Aria2\";\nimport Auth from \"../../middleware/Auth\";\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 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, { 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 { withRouter } from \"react-router-dom\";\nimport Creator from \"./Creator\";\nimport pathHelper from \"../../utils/page\";\nimport {\n openMusicDialog,\n openResaveDialog,\n setSelectedTarget,\n showImgPreivew,\n toggleSnackbar,\n} from \"../../redux/explorer\";\nimport { startDownload } from \"../../redux/explorer/action\";\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 };\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 };\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 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 scoreHandle = (callback) => (event) => {\n callback(event);\n };\n\n download = () => {\n this.props.startDownload(this.props.share, null);\n };\n\n render() {\n const { classes } = this.props;\n return (\n
\n \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 {this.props.share.preview && (\n \n 预览\n \n )}\n
\n
\n \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 { openMusicDialog, openResaveDialog, setSelectedTarget, setShareUserPopover, showImgPreivew, toggleSnackbar } from \"../../redux/explorer\";\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 };\n};\n\nclass SharedFolderComponent extends Component {\n state = {};\n\n UNSAFE_componentWillMount() {\n window.shareInfo = this.props.share;\n }\n\n componentWillUnmount() {\n window.shareInfo = null;\n this.props.setSelectedTarget([]);\n }\n\n handleClickAway = () => {\n if (!pathHelper.isMobile()) {\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 }, [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 - 18px)\",\n marginBottom: -3,\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