@burdenoff/microfe-files 2026.525.2 → 2026.527.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/files/components/ActionMenu.js +3 -1
- package/dist/files/components/ActionMenu.js.map +1 -1
- package/dist/files/components/ContextMenu.js +16 -112
- package/dist/files/components/ContextMenu.js.map +1 -1
- package/dist/files/components/CopyDialog.js +8 -0
- package/dist/files/components/CopyDialog.js.map +1 -1
- package/dist/files/components/EmptyState.js +2 -0
- package/dist/files/components/EmptyState.js.map +1 -1
- package/dist/files/components/FileBrowser.js +6 -1
- package/dist/files/components/FileBrowser.js.map +1 -1
- package/dist/files/components/FileCard.js +4 -0
- package/dist/files/components/FileCard.js.map +1 -1
- package/dist/files/components/FileInfoPanel.js +2 -0
- package/dist/files/components/FileInfoPanel.js.map +1 -1
- package/dist/files/components/FileListItem.js +6 -0
- package/dist/files/components/FileListItem.js.map +1 -1
- package/dist/files/components/FilePreviewModal.js +9 -3
- package/dist/files/components/FilePreviewModal.js.map +1 -1
- package/dist/files/components/FileVersionPanel.js +5 -0
- package/dist/files/components/FileVersionPanel.js.map +1 -1
- package/dist/files/components/FolderCard.js +3 -0
- package/dist/files/components/FolderCard.js.map +1 -1
- package/dist/files/components/MoveDialog.js +8 -0
- package/dist/files/components/MoveDialog.js.map +1 -1
- package/dist/files/components/SearchBar.js +4 -0
- package/dist/files/components/SearchBar.js.map +1 -1
- package/dist/files/components/ShareDialog.js +109 -104
- package/dist/files/components/ShareDialog.js.map +1 -1
- package/dist/files/components/TabBar.js +1 -0
- package/dist/files/components/TabBar.js.map +1 -1
- package/dist/files/components/Toast.js +1 -0
- package/dist/files/components/Toast.js.map +1 -1
- package/dist/files/components/UploadQueue.js +5 -0
- package/dist/files/components/UploadQueue.js.map +1 -1
- package/dist/files/components/contextMenuItems.js +103 -0
- package/dist/files/components/contextMenuItems.js.map +1 -0
- package/dist/files/components/viewers/AudioPlayer.js +4 -1
- package/dist/files/components/viewers/AudioPlayer.js.map +1 -1
- package/dist/files/components/viewers/CodeViewer.js +2 -0
- package/dist/files/components/viewers/CodeViewer.js.map +1 -1
- package/dist/files/components/viewers/ImageViewer.js +4 -0
- package/dist/files/components/viewers/ImageViewer.js.map +1 -1
- package/dist/files/components/viewers/PDFViewer.js +2 -0
- package/dist/files/components/viewers/PDFViewer.js.map +1 -1
- package/dist/files/components/viewers/TextViewer.js +4 -2
- package/dist/files/components/viewers/TextViewer.js.map +1 -1
- package/dist/files/components/viewers/VideoPlayer.js +5 -1
- package/dist/files/components/viewers/VideoPlayer.js.map +1 -1
- package/dist/files/hooks/useBatchOperations.js.map +1 -1
- package/dist/files/hooks/useFileVersions.js.map +1 -1
- package/dist/files/pages/BrowserPage.js +18 -2
- package/dist/files/pages/BrowserPage.js.map +1 -1
- package/dist/files/pages/ShareAccessPage.js +6 -5
- package/dist/files/pages/ShareAccessPage.js.map +1 -1
- package/dist/files/utils/index.js +1 -1
- package/dist/files/utils/index.js.map +1 -1
- package/dist/files/utils/thumbnail.js.map +1 -1
- package/dist/files.js +2 -1
- package/dist/translations/en.js +259 -0
- package/dist/translations/en.js.map +1 -0
- package/package.json +1 -4
- package/dist/config/index.d.ts +0 -33
- package/dist/config/index.d.ts.map +0 -1
- package/dist/dev/main.d.ts +0 -1
- package/dist/dev/main.d.ts.map +0 -1
- package/dist/files/FilesRoot.d.ts +0 -31
- package/dist/files/FilesRoot.d.ts.map +0 -1
- package/dist/files/FilesRoutes.d.ts +0 -12
- package/dist/files/FilesRoutes.d.ts.map +0 -1
- package/dist/files/components/ActionMenu.d.ts +0 -19
- package/dist/files/components/ActionMenu.d.ts.map +0 -1
- package/dist/files/components/ConfirmDialog.d.ts +0 -14
- package/dist/files/components/ConfirmDialog.d.ts.map +0 -1
- package/dist/files/components/ContextMenu.d.ts +0 -59
- package/dist/files/components/ContextMenu.d.ts.map +0 -1
- package/dist/files/components/CopyDialog.d.ts +0 -12
- package/dist/files/components/CopyDialog.d.ts.map +0 -1
- package/dist/files/components/EmptyState.d.ts +0 -8
- package/dist/files/components/EmptyState.d.ts.map +0 -1
- package/dist/files/components/FileBrowser.d.ts +0 -37
- package/dist/files/components/FileBrowser.d.ts.map +0 -1
- package/dist/files/components/FileCard.d.ts +0 -30
- package/dist/files/components/FileCard.d.ts.map +0 -1
- package/dist/files/components/FileInfoPanel.d.ts +0 -9
- package/dist/files/components/FileInfoPanel.d.ts.map +0 -1
- package/dist/files/components/FileListItem.d.ts +0 -29
- package/dist/files/components/FileListItem.d.ts.map +0 -1
- package/dist/files/components/FilePreviewModal.d.ts +0 -17
- package/dist/files/components/FilePreviewModal.d.ts.map +0 -1
- package/dist/files/components/FileVersionPanel.d.ts +0 -9
- package/dist/files/components/FileVersionPanel.d.ts.map +0 -1
- package/dist/files/components/FolderCard.d.ts +0 -34
- package/dist/files/components/FolderCard.d.ts.map +0 -1
- package/dist/files/components/MoveDialog.d.ts +0 -12
- package/dist/files/components/MoveDialog.d.ts.map +0 -1
- package/dist/files/components/SearchBar.d.ts +0 -13
- package/dist/files/components/SearchBar.d.ts.map +0 -1
- package/dist/files/components/ShareDialog.d.ts +0 -24
- package/dist/files/components/ShareDialog.d.ts.map +0 -1
- package/dist/files/components/TabBar.d.ts +0 -14
- package/dist/files/components/TabBar.d.ts.map +0 -1
- package/dist/files/components/Toast.d.ts +0 -14
- package/dist/files/components/Toast.d.ts.map +0 -1
- package/dist/files/components/UploadQueue.d.ts +0 -21
- package/dist/files/components/UploadQueue.d.ts.map +0 -1
- package/dist/files/components/index.d.ts +0 -43
- package/dist/files/components/index.d.ts.map +0 -1
- package/dist/files/components/viewers/AudioPlayer.d.ts +0 -8
- package/dist/files/components/viewers/AudioPlayer.d.ts.map +0 -1
- package/dist/files/components/viewers/CodeViewer.d.ts +0 -16
- package/dist/files/components/viewers/CodeViewer.d.ts.map +0 -1
- package/dist/files/components/viewers/ImageViewer.d.ts +0 -8
- package/dist/files/components/viewers/ImageViewer.d.ts.map +0 -1
- package/dist/files/components/viewers/PDFViewer.d.ts +0 -15
- package/dist/files/components/viewers/PDFViewer.d.ts.map +0 -1
- package/dist/files/components/viewers/TextViewer.d.ts +0 -8
- package/dist/files/components/viewers/TextViewer.d.ts.map +0 -1
- package/dist/files/components/viewers/VideoPlayer.d.ts +0 -8
- package/dist/files/components/viewers/VideoPlayer.d.ts.map +0 -1
- package/dist/files/components/viewers/index.d.ts +0 -7
- package/dist/files/components/viewers/index.d.ts.map +0 -1
- package/dist/files/components/viewers/index.js +0 -6
- package/dist/files/graphql-types.d.ts +0 -317
- package/dist/files/graphql-types.d.ts.map +0 -1
- package/dist/files/hooks/useBatchOperations.d.ts +0 -32
- package/dist/files/hooks/useBatchOperations.d.ts.map +0 -1
- package/dist/files/hooks/useBinItems.d.ts +0 -11
- package/dist/files/hooks/useBinItems.d.ts.map +0 -1
- package/dist/files/hooks/useBrowsePage.d.ts +0 -18
- package/dist/files/hooks/useBrowsePage.d.ts.map +0 -1
- package/dist/files/hooks/useCopyFile.d.ts +0 -14
- package/dist/files/hooks/useCopyFile.d.ts.map +0 -1
- package/dist/files/hooks/useCreateFolder.d.ts +0 -14
- package/dist/files/hooks/useCreateFolder.d.ts.map +0 -1
- package/dist/files/hooks/useCreateFolderShare.d.ts +0 -16
- package/dist/files/hooks/useCreateFolderShare.d.ts.map +0 -1
- package/dist/files/hooks/useCreateShare.d.ts +0 -16
- package/dist/files/hooks/useCreateShare.d.ts.map +0 -1
- package/dist/files/hooks/useDeleteFile.d.ts +0 -9
- package/dist/files/hooks/useDeleteFile.d.ts.map +0 -1
- package/dist/files/hooks/useDeleteFolder.d.ts +0 -10
- package/dist/files/hooks/useDeleteFolder.d.ts.map +0 -1
- package/dist/files/hooks/useDragDrop.d.ts +0 -31
- package/dist/files/hooks/useDragDrop.d.ts.map +0 -1
- package/dist/files/hooks/useFileVersions.d.ts +0 -52
- package/dist/files/hooks/useFileVersions.d.ts.map +0 -1
- package/dist/files/hooks/useFiles.d.ts +0 -18
- package/dist/files/hooks/useFiles.d.ts.map +0 -1
- package/dist/files/hooks/useFolder.d.ts +0 -7
- package/dist/files/hooks/useFolder.d.ts.map +0 -1
- package/dist/files/hooks/useFolderPath.d.ts +0 -2
- package/dist/files/hooks/useFolderPath.d.ts.map +0 -1
- package/dist/files/hooks/useFoldersQuery.d.ts +0 -7
- package/dist/files/hooks/useFoldersQuery.d.ts.map +0 -1
- package/dist/files/hooks/useKeyboardNavigation.d.ts +0 -17
- package/dist/files/hooks/useKeyboardNavigation.d.ts.map +0 -1
- package/dist/files/hooks/useMoveFile.d.ts +0 -10
- package/dist/files/hooks/useMoveFile.d.ts.map +0 -1
- package/dist/files/hooks/useMoveFolder.d.ts +0 -10
- package/dist/files/hooks/useMoveFolder.d.ts.map +0 -1
- package/dist/files/hooks/usePermanentlyDeleteFile.d.ts +0 -9
- package/dist/files/hooks/usePermanentlyDeleteFile.d.ts.map +0 -1
- package/dist/files/hooks/usePermanentlyDeleteFolder.d.ts +0 -9
- package/dist/files/hooks/usePermanentlyDeleteFolder.d.ts.map +0 -1
- package/dist/files/hooks/useRecentFiles.d.ts +0 -10
- package/dist/files/hooks/useRecentFiles.d.ts.map +0 -1
- package/dist/files/hooks/useRenameFile.d.ts +0 -10
- package/dist/files/hooks/useRenameFile.d.ts.map +0 -1
- package/dist/files/hooks/useRenameFolder.d.ts +0 -10
- package/dist/files/hooks/useRenameFolder.d.ts.map +0 -1
- package/dist/files/hooks/useRestoreFile.d.ts +0 -9
- package/dist/files/hooks/useRestoreFile.d.ts.map +0 -1
- package/dist/files/hooks/useRestoreFolder.d.ts +0 -9
- package/dist/files/hooks/useRestoreFolder.d.ts.map +0 -1
- package/dist/files/hooks/useSearch.d.ts +0 -15
- package/dist/files/hooks/useSearch.d.ts.map +0 -1
- package/dist/files/hooks/useStarredItems.d.ts +0 -10
- package/dist/files/hooks/useStarredItems.d.ts.map +0 -1
- package/dist/files/hooks/useToast.d.ts +0 -11
- package/dist/files/hooks/useToast.d.ts.map +0 -1
- package/dist/files/hooks/useToggleStar.d.ts +0 -10
- package/dist/files/hooks/useToggleStar.d.ts.map +0 -1
- package/dist/files/hooks/useUploadFile.d.ts +0 -25
- package/dist/files/hooks/useUploadFile.d.ts.map +0 -1
- package/dist/files/index.d.ts +0 -29
- package/dist/files/index.d.ts.map +0 -1
- package/dist/files/pages/BrowserPage.d.ts +0 -5
- package/dist/files/pages/BrowserPage.d.ts.map +0 -1
- package/dist/files/pages/ShareAccessPage.d.ts +0 -2
- package/dist/files/pages/ShareAccessPage.d.ts.map +0 -1
- package/dist/files/providers/FilesProvider.d.ts +0 -25
- package/dist/files/providers/FilesProvider.d.ts.map +0 -1
- package/dist/files/store/filesStore.d.ts +0 -99
- package/dist/files/store/filesStore.d.ts.map +0 -1
- package/dist/files/types.d.ts +0 -266
- package/dist/files/types.d.ts.map +0 -1
- package/dist/files/utils/events.d.ts +0 -6
- package/dist/files/utils/events.d.ts.map +0 -1
- package/dist/files/utils/i18n.d.ts +0 -5
- package/dist/files/utils/i18n.d.ts.map +0 -1
- package/dist/files/utils/index.d.ts +0 -74
- package/dist/files/utils/index.d.ts.map +0 -1
- package/dist/files/utils/thumbnail.d.ts +0 -5
- package/dist/files/utils/thumbnail.d.ts.map +0 -1
- package/dist/files.d.ts +0 -2
- package/dist/generated/global-operations.d.ts +0 -2
- package/dist/generated/global-operations.d.ts.map +0 -1
- package/dist/generated/global-types.d.ts +0 -23527
- package/dist/generated/global-types.d.ts.map +0 -1
- package/dist/generated/wspace-operations.d.ts +0 -2706
- package/dist/generated/wspace-operations.d.ts.map +0 -1
- package/dist/generated/wspace-types.d.ts +0 -57851
- package/dist/generated/wspace-types.d.ts.map +0 -1
- package/dist/index.d.ts +0 -30
- package/dist/index.d.ts.map +0 -1
- package/dist/shared/types/index.d.ts +0 -101
- package/dist/shared/types/index.d.ts.map +0 -1
- package/dist/translations/en.d.ts +0 -315
- package/dist/translations/en.d.ts.map +0 -1
- package/dist/utils/nativeBridge.d.ts +0 -3
- package/dist/utils/nativeBridge.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoPlayer.js","names":[],"sources":["../../../../src/files/components/viewers/VideoPlayer.tsx"],"sourcesContent":["import { useState, useRef, useEffect } from \"react\";\nimport { Play, Pause, Volume2, VolumeX, Maximize } from \"lucide-react\";\nimport type { FileItem } from \"../../types\";\n\ninterface VideoPlayerProps {\n file: FileItem;\n url: string;\n}\n\nexport function VideoPlayer({ file, url }: VideoPlayerProps) {\n const videoRef = useRef<HTMLVideoElement>(null);\n const [isPlaying, setIsPlaying] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(1);\n const [isMuted, setIsMuted] = useState(false);\n const [playbackRate, setPlaybackRate] = useState(1);\n\n useEffect(() => {\n const video = videoRef.current;\n if (!video) return;\n\n const handleTimeUpdate = () => setCurrentTime(video.currentTime);\n const handleLoadedMetadata = () => setDuration(video.duration);\n const handleEnded = () => setIsPlaying(false);\n\n video.addEventListener(\"timeupdate\", handleTimeUpdate);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"ended\", handleEnded);\n\n return () => {\n video.removeEventListener(\"timeupdate\", handleTimeUpdate);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, []);\n\n const togglePlay = () => {\n if (videoRef.current) {\n if (isPlaying) {\n videoRef.current.pause();\n } else {\n videoRef.current.play();\n }\n setIsPlaying(!isPlaying);\n }\n };\n\n const handleSeek = (time: number) => {\n if (videoRef.current) {\n videoRef.current.currentTime = time;\n setCurrentTime(time);\n }\n };\n\n const handleVolumeChange = (newVolume: number) => {\n setVolume(newVolume);\n setIsMuted(newVolume === 0);\n if (videoRef.current) {\n videoRef.current.volume = newVolume;\n }\n };\n\n const toggleMute = () => {\n if (videoRef.current) {\n const newMuted = !isMuted;\n setIsMuted(newMuted);\n videoRef.current.muted = newMuted;\n }\n };\n\n const handlePlaybackRateChange = (rate: number) => {\n setPlaybackRate(rate);\n if (videoRef.current) {\n videoRef.current.playbackRate = rate;\n }\n };\n\n const handleFullscreen = () => {\n if (videoRef.current) {\n videoRef.current.requestFullscreen();\n }\n };\n\n const formatTime = (seconds: number): string => {\n const mins = Math.floor(seconds / 60);\n const secs = Math.floor(seconds % 60);\n return `${mins}:${secs.toString().padStart(2, \"0\")}`;\n };\n\n return (\n <div className=\"flex h-full flex-col bg-bg-canvas\">\n {/* Video */}\n <div className=\"flex-1 flex items-center justify-center\">\n <video\n ref={videoRef}\n src={url}\n className=\"max-w-full max-h-full\"\n onClick={togglePlay}\n />\n </div>\n\n {/* Controls */}\n <div className=\"bg-bg-surface border-t border-border-default p-4\">\n {/* Progress Bar */}\n <div className=\"mb-4\">\n <input\n type=\"range\"\n min={0}\n max={duration || 0}\n value={currentTime}\n onChange={(e) => handleSeek(Number(e.target.value))}\n className=\"w-full h-1 bg-bg-muted rounded-lg appearance-none cursor-pointer accent-action-primary-bg\"\n />\n <div className=\"flex justify-between mt-1 text-xs text-text-secondary\">\n <span>{formatTime(currentTime)}</span>\n <span>{formatTime(duration)}</span>\n </div>\n </div>\n\n {/* Control Buttons */}\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {/* Play/Pause */}\n <button\n onClick={togglePlay}\n className=\"p-2 text-text-primary hover:bg-action-ghost-bg-hover rounded transition-colors duration-200\"\n title={isPlaying ? \"Pause\" : \"Play\"}\n aria-label={isPlaying ? \"Pause video\" : \"Play video\"}\n >\n {isPlaying ? (\n <Pause className=\"size-5\" />\n ) : (\n <Play className=\"size-5\" />\n )}\n </button>\n\n {/* Volume */}\n <div className=\"flex items-center gap-2\">\n <button\n onClick={toggleMute}\n className=\"p-2 text-text-secondary hover:text-text-primary hover:bg-action-ghost-bg-hover rounded transition-colors duration-200\"\n title={isMuted ? \"Unmute\" : \"Mute\"}\n aria-label={isMuted ? \"Unmute video\" : \"Mute video\"}\n >\n {isMuted ? (\n <VolumeX className=\"size-5\" />\n ) : (\n <Volume2 className=\"size-5\" />\n )}\n </button>\n <input\n type=\"range\"\n min={0}\n max={1}\n step={0.1}\n value={volume}\n onChange={(e) => handleVolumeChange(Number(e.target.value))}\n className=\"w-20 h-1 bg-bg-muted rounded-lg appearance-none cursor-pointer accent-action-primary-bg\"\n />\n </div>\n\n {/* Playback Speed */}\n <select\n value={playbackRate}\n onChange={(e) => handlePlaybackRateChange(Number(e.target.value))}\n className=\"px-2 py-1 text-sm bg-bg-surface border border-border-default rounded text-text-primary cursor-pointer\"\n >\n <option value=\"0.5\">0.5x</option>\n <option value=\"0.75\">0.75x</option>\n <option value=\"1\">1x</option>\n <option value=\"1.25\">1.25x</option>\n <option value=\"1.5\">1.5x</option>\n <option value=\"2\">2x</option>\n </select>\n </div>\n\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-text-secondary\">{file.name}</span>\n <button\n onClick={handleFullscreen}\n className=\"p-2 text-text-secondary hover:text-text-primary hover:bg-action-ghost-bg-hover rounded transition-colors duration-200\"\n title=\"Fullscreen\"\n aria-label=\"Open fullscreen\"\n >\n <Maximize className=\"size-5\" />\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;AASA,SAAgB,EAAY,EAAE,SAAM,UAAyB;CAC3D,IAAM,IAAW,EAAyB,KAAK,EACzC,CAAC,GAAW,KAAgB,EAAS,GAAM,EAC3C,CAAC,GAAa,KAAkB,EAAS,EAAE,EAC3C,CAAC,GAAU,KAAe,EAAS,EAAE,EACrC,CAAC,GAAQ,KAAa,EAAS,EAAE,EACjC,CAAC,GAAS,KAAc,EAAS,GAAM,EACvC,CAAC,GAAc,KAAmB,EAAS,EAAE;AAEnD,SAAgB;EACd,IAAM,IAAQ,EAAS;AACvB,MAAI,CAAC,EAAO;EAEZ,IAAM,UAAyB,EAAe,EAAM,YAAY,EAC1D,UAA6B,EAAY,EAAM,SAAS,EACxD,UAAoB,EAAa,GAAM;AAM7C,SAJA,EAAM,iBAAiB,cAAc,EAAiB,EACtD,EAAM,iBAAiB,kBAAkB,EAAqB,EAC9D,EAAM,iBAAiB,SAAS,EAAY,QAE/B;AAGX,GAFA,EAAM,oBAAoB,cAAc,EAAiB,EACzD,EAAM,oBAAoB,kBAAkB,EAAqB,EACjE,EAAM,oBAAoB,SAAS,EAAY;;IAEhD,EAAE,CAAC;CAEN,IAAM,UAAmB;AACvB,EAAI,EAAS,YACP,IACF,EAAS,QAAQ,OAAO,GAExB,EAAS,QAAQ,MAAM,EAEzB,EAAa,CAAC,EAAU;IAItB,KAAc,MAAiB;AACnC,EAAI,EAAS,YACX,EAAS,QAAQ,cAAc,GAC/B,EAAe,EAAK;IAIlB,KAAsB,MAAsB;AAGhD,EAFA,EAAU,EAAU,EACpB,EAAW,MAAc,EAAE,EACvB,EAAS,YACX,EAAS,QAAQ,SAAS;IAIxB,UAAmB;AACvB,MAAI,EAAS,SAAS;GACpB,IAAM,IAAW,CAAC;AAElB,GADA,EAAW,EAAS,EACpB,EAAS,QAAQ,QAAQ;;IAIvB,KAA4B,MAAiB;AAEjD,EADA,EAAgB,EAAK,EACjB,EAAS,YACX,EAAS,QAAQ,eAAe;IAI9B,UAAyB;AAC7B,EAAI,EAAS,WACX,EAAS,QAAQ,mBAAmB;IAIlC,KAAc,MAGX,GAFM,KAAK,MAAM,IAAU,GAAG,CAEtB,GADF,KAAK,MAAM,IAAU,GAAG,CACd,UAAU,CAAC,SAAS,GAAG,IAAI;AAGpD,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CAEE,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,SAAD;IACE,KAAK;IACL,KAAK;IACL,WAAU;IACV,SAAS;
|
|
1
|
+
{"version":3,"file":"VideoPlayer.js","names":[],"sources":["../../../../src/files/components/viewers/VideoPlayer.tsx"],"sourcesContent":["import { useState, useRef, useEffect } from \"react\";\nimport { Play, Pause, Volume2, VolumeX, Maximize } from \"lucide-react\";\nimport type { FileItem } from \"../../types\";\n\ninterface VideoPlayerProps {\n file: FileItem;\n url: string;\n}\n\nexport function VideoPlayer({ file, url }: VideoPlayerProps) {\n const videoRef = useRef<HTMLVideoElement>(null);\n const [isPlaying, setIsPlaying] = useState(false);\n const [currentTime, setCurrentTime] = useState(0);\n const [duration, setDuration] = useState(0);\n const [volume, setVolume] = useState(1);\n const [isMuted, setIsMuted] = useState(false);\n const [playbackRate, setPlaybackRate] = useState(1);\n\n useEffect(() => {\n const video = videoRef.current;\n if (!video) return;\n\n const handleTimeUpdate = () => setCurrentTime(video.currentTime);\n const handleLoadedMetadata = () => setDuration(video.duration);\n const handleEnded = () => setIsPlaying(false);\n\n video.addEventListener(\"timeupdate\", handleTimeUpdate);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"ended\", handleEnded);\n\n return () => {\n video.removeEventListener(\"timeupdate\", handleTimeUpdate);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, []);\n\n const togglePlay = () => {\n if (videoRef.current) {\n if (isPlaying) {\n videoRef.current.pause();\n } else {\n videoRef.current.play();\n }\n setIsPlaying(!isPlaying);\n }\n };\n\n const handleSeek = (time: number) => {\n if (videoRef.current) {\n videoRef.current.currentTime = time;\n setCurrentTime(time);\n }\n };\n\n const handleVolumeChange = (newVolume: number) => {\n setVolume(newVolume);\n setIsMuted(newVolume === 0);\n if (videoRef.current) {\n videoRef.current.volume = newVolume;\n }\n };\n\n const toggleMute = () => {\n if (videoRef.current) {\n const newMuted = !isMuted;\n setIsMuted(newMuted);\n videoRef.current.muted = newMuted;\n }\n };\n\n const handlePlaybackRateChange = (rate: number) => {\n setPlaybackRate(rate);\n if (videoRef.current) {\n videoRef.current.playbackRate = rate;\n }\n };\n\n const handleFullscreen = () => {\n if (videoRef.current) {\n videoRef.current.requestFullscreen();\n }\n };\n\n const formatTime = (seconds: number): string => {\n const mins = Math.floor(seconds / 60);\n const secs = Math.floor(seconds % 60);\n return `${mins}:${secs.toString().padStart(2, \"0\")}`;\n };\n\n return (\n <div className=\"flex h-full flex-col bg-bg-canvas\">\n {/* Video */}\n <div className=\"flex-1 flex items-center justify-center\">\n <video\n ref={videoRef}\n src={url}\n className=\"max-w-full max-h-full\"\n onClick={togglePlay}\n >\n <track kind=\"captions\" />\n </video>\n </div>\n\n {/* Controls */}\n <div className=\"bg-bg-surface border-t border-border-default p-4\">\n {/* Progress Bar */}\n <div className=\"mb-4\">\n <input\n type=\"range\"\n min={0}\n max={duration || 0}\n value={currentTime}\n onChange={(e) => handleSeek(Number(e.target.value))}\n className=\"w-full h-1 bg-bg-muted rounded-lg appearance-none cursor-pointer accent-action-primary-bg\"\n />\n <div className=\"flex justify-between mt-1 text-xs text-text-secondary\">\n <span>{formatTime(currentTime)}</span>\n <span>{formatTime(duration)}</span>\n </div>\n </div>\n\n {/* Control Buttons */}\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {/* Play/Pause */}\n <button\n type=\"button\"\n onClick={togglePlay}\n className=\"p-2 text-text-primary hover:bg-action-ghost-bg-hover rounded transition-colors duration-200\"\n title={isPlaying ? \"Pause\" : \"Play\"}\n aria-label={isPlaying ? \"Pause video\" : \"Play video\"}\n >\n {isPlaying ? (\n <Pause className=\"size-5\" />\n ) : (\n <Play className=\"size-5\" />\n )}\n </button>\n\n {/* Volume */}\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={toggleMute}\n className=\"p-2 text-text-secondary hover:text-text-primary hover:bg-action-ghost-bg-hover rounded transition-colors duration-200\"\n title={isMuted ? \"Unmute\" : \"Mute\"}\n aria-label={isMuted ? \"Unmute video\" : \"Mute video\"}\n >\n {isMuted ? (\n <VolumeX className=\"size-5\" />\n ) : (\n <Volume2 className=\"size-5\" />\n )}\n </button>\n <input\n type=\"range\"\n min={0}\n max={1}\n step={0.1}\n value={volume}\n onChange={(e) => handleVolumeChange(Number(e.target.value))}\n className=\"w-20 h-1 bg-bg-muted rounded-lg appearance-none cursor-pointer accent-action-primary-bg\"\n />\n </div>\n\n {/* Playback Speed */}\n <select\n value={playbackRate}\n onChange={(e) => handlePlaybackRateChange(Number(e.target.value))}\n className=\"px-2 py-1 text-sm bg-bg-surface border border-border-default rounded text-text-primary cursor-pointer\"\n >\n <option value=\"0.5\">0.5x</option>\n <option value=\"0.75\">0.75x</option>\n <option value=\"1\">1x</option>\n <option value=\"1.25\">1.25x</option>\n <option value=\"1.5\">1.5x</option>\n <option value=\"2\">2x</option>\n </select>\n </div>\n\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-text-secondary\">{file.name}</span>\n <button\n type=\"button\"\n onClick={handleFullscreen}\n className=\"p-2 text-text-secondary hover:text-text-primary hover:bg-action-ghost-bg-hover rounded transition-colors duration-200\"\n title=\"Fullscreen\"\n aria-label=\"Open fullscreen\"\n >\n <Maximize className=\"size-5\" />\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBatchOperations.js","names":[],"sources":["../../../src/files/hooks/useBatchOperations.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"useBatchOperations.js","names":[],"sources":["../../../src/files/hooks/useBatchOperations.ts"],"sourcesContent":["import { useBulkDeleteFilesMutation } from \"../../generated/wspace-operations\";\n\nexport const useBulkDelete = () => {\n const [bulkDeleteFilesMutation, { loading, error }] =\n useBulkDeleteFilesMutation({\n refetchQueries: [\"GetFiles\", \"GetFolders\", \"GetBinFiles\"],\n });\n\n return {\n mutateAsync: async (ids: string[]) => {\n const result = await bulkDeleteFilesMutation({\n variables: { ids },\n });\n\n return result.data?.bulkDeleteFiles;\n },\n isPending: loading,\n error,\n };\n};\n"],"mappings":";;AAEA,IAAa,UAAsB;CACjC,IAAM,CAAC,GAAyB,EAAE,YAAS,cACzC,EAA2B,EACzB,gBAAgB;EAAC;EAAY;EAAc;EAAc,EAC1D,CAAC;AAEJ,QAAO;EACL,aAAa,OAAO,OACH,MAAM,EAAwB,EAC3C,WAAW,EAAE,QAAK,EACnB,CAAC,EAEY,MAAM;EAEtB,WAAW;EACX;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFileVersions.js","names":[],"sources":["../../../src/files/hooks/useFileVersions.ts"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"file":"useFileVersions.js","names":[],"sources":["../../../src/files/hooks/useFileVersions.ts"],"sourcesContent":["import {\n useDeleteFileVersionMutation,\n useGetFileVersionDownloadUrlLazyQuery,\n useGetFileVersionsQuery,\n useRestoreFileVersionMutation,\n} from \"../../generated/wspace-operations\";\n\nexport const useFileVersions = (_fileId: string, _enabled: boolean = true) => {\n const query = useGetFileVersionsQuery({\n variables: {\n fileId: _fileId,\n pagination: { limit: 50 },\n },\n skip: !_enabled || !_fileId,\n });\n\n return {\n data: query.data?.getFileVersions ?? null,\n isLoading: query.loading,\n error: (query.error as Error | null) ?? null,\n refetch: query.refetch,\n };\n};\n\n/**\n * Hook to restore a previous version\n */\nexport const useRestoreFileVersion = () => {\n const [restoreFileVersionMutation, { loading, error }] =\n useRestoreFileVersionMutation({\n refetchQueries: [\"GetFileVersions\"],\n });\n\n return {\n mutateAsync: async (input: {\n versionId: string;\n createNewVersion?: boolean;\n changeMessage?: string;\n }) => {\n const result = await restoreFileVersionMutation({\n variables: {\n input: {\n versionId: input.versionId,\n createNewVersion: input.createNewVersion,\n changeMessage: input.changeMessage,\n },\n },\n });\n\n return result.data?.restoreFileVersion;\n },\n isPending: loading,\n error,\n };\n};\n\n/**\n * Hook to delete a specific version\n */\nexport const useDeleteFileVersion = () => {\n const [deleteFileVersionMutation, { loading, error }] =\n useDeleteFileVersionMutation({\n refetchQueries: [\"GetFileVersions\"],\n });\n\n return {\n mutateAsync: async (versionId: string) => {\n const result = await deleteFileVersionMutation({\n variables: { versionId },\n });\n\n return result.data?.deleteFileVersion;\n },\n isPending: loading,\n error,\n };\n};\n\n/**\n * Hook to get download URL for a specific version\n */\nexport const useVersionDownloadUrl = (\n _versionId?: string,\n _expiresIn?: number,\n) => {\n const [getDownloadUrl, { data, loading, error }] =\n useGetFileVersionDownloadUrlLazyQuery();\n\n return {\n data: data?.getFileVersionDownloadUrl,\n isLoading: loading,\n error,\n getDownloadUrl: async (versionId = _versionId, expiresIn = _expiresIn) => {\n if (!versionId) {\n return undefined;\n }\n\n const result = await getDownloadUrl({\n variables: { versionId, expiresIn },\n });\n\n return result.data?.getFileVersionDownloadUrl;\n },\n };\n};\n"],"mappings":";;AAOA,IAAa,KAAmB,GAAiB,IAAoB,OAAS;CAC5E,IAAM,IAAQ,EAAwB;EACpC,WAAW;GACT,QAAQ;GACR,YAAY,EAAE,OAAO,IAAI;GAC1B;EACD,MAAM,CAAC,KAAY,CAAC;EACrB,CAAC;AAEF,QAAO;EACL,MAAM,EAAM,MAAM,mBAAmB;EACrC,WAAW,EAAM;EACjB,OAAQ,EAAM,SAA0B;EACxC,SAAS,EAAM;EAChB;GAMU,UAA8B;CACzC,IAAM,CAAC,GAA4B,EAAE,YAAS,cAC5C,EAA8B,EAC5B,gBAAgB,CAAC,kBAAkB,EACpC,CAAC;AAEJ,QAAO;EACL,aAAa,OAAO,OAKH,MAAM,EAA2B,EAC9C,WAAW,EACT,OAAO;GACL,WAAW,EAAM;GACjB,kBAAkB,EAAM;GACxB,eAAe,EAAM;GACtB,EACF,EACF,CAAC,EAEY,MAAM;EAEtB,WAAW;EACX;EACD;GAMU,UAA6B;CACxC,IAAM,CAAC,GAA2B,EAAE,YAAS,cAC3C,EAA6B,EAC3B,gBAAgB,CAAC,kBAAkB,EACpC,CAAC;AAEJ,QAAO;EACL,aAAa,OAAO,OACH,MAAM,EAA0B,EAC7C,WAAW,EAAE,cAAW,EACzB,CAAC,EAEY,MAAM;EAEtB,WAAW;EACX;EACD;GAMU,KACX,GACA,MACG;CACH,IAAM,CAAC,GAAgB,EAAE,SAAM,YAAS,cACtC,GAAuC;AAEzC,QAAO;EACL,MAAM,GAAM;EACZ,WAAW;EACX;EACA,gBAAgB,OAAO,IAAY,GAAY,IAAY,MAAe;AACnE,SAQL,SAJe,MAAM,EAAe,EAClC,WAAW;IAAE;IAAW;IAAW,EACpC,CAAC,EAEY,MAAM;;EAEvB"}
|
|
@@ -581,6 +581,7 @@ function d() {
|
|
|
581
581
|
children: /* @__PURE__ */ u("div", {
|
|
582
582
|
className: "flex items-center gap-1 sm:gap-2 text-sm overflow-x-auto",
|
|
583
583
|
children: [/* @__PURE__ */ u("button", {
|
|
584
|
+
type: "button",
|
|
584
585
|
onClick: () => et("/files/browse"),
|
|
585
586
|
className: "flex items-center gap-1 text-text-primary hover:bg-action-ghost-bg-hover px-2 py-1 rounded transition-colors duration-200 whitespace-nowrap",
|
|
586
587
|
title: a(d, "files.browser.actions.goToRoot", "Go to root"),
|
|
@@ -594,6 +595,7 @@ function d() {
|
|
|
594
595
|
className: "text-text-tertiary",
|
|
595
596
|
children: "/"
|
|
596
597
|
}), /* @__PURE__ */ l("button", {
|
|
598
|
+
type: "button",
|
|
597
599
|
onClick: () => et(`/files/browse/${e.id}`),
|
|
598
600
|
className: `hover:bg-action-ghost-bg-hover px-2 py-1 rounded transition-colors duration-200 whitespace-nowrap ${t === it.length - 1 ? "text-text-primary font-medium" : "text-text-secondary"}`,
|
|
599
601
|
title: `Go to ${e.name}`,
|
|
@@ -630,6 +632,7 @@ function d() {
|
|
|
630
632
|
className: "flex items-center gap-2 order-1 sm:order-2 w-full sm:w-auto justify-between sm:justify-end",
|
|
631
633
|
children: [
|
|
632
634
|
!y && (D.length > 0 || O.length > 0) && /* @__PURE__ */ l("button", {
|
|
635
|
+
type: "button",
|
|
633
636
|
onClick: () => {
|
|
634
637
|
let e = D.map((e) => e.id), n = O.map((e) => e.id);
|
|
635
638
|
t.getState().selectAllFiles(e), n.forEach((e) => t.getState().selectFolder(e));
|
|
@@ -639,6 +642,7 @@ function d() {
|
|
|
639
642
|
}),
|
|
640
643
|
!y && /* @__PURE__ */ u(c, { children: [
|
|
641
644
|
/* @__PURE__ */ u("button", {
|
|
645
|
+
type: "button",
|
|
642
646
|
onClick: $t,
|
|
643
647
|
className: "flex items-center gap-1 sm:gap-2 px-2 sm:px-4 py-2 text-xs sm:text-sm font-medium text-text-primary bg-bg-surface border border-border-default rounded-lg hover:bg-action-ghost-bg-hover hover:border-border-default transition-all duration-200 shadow-sm",
|
|
644
648
|
children: [/* @__PURE__ */ l(Be, { className: "size-4" }), /* @__PURE__ */ l("span", {
|
|
@@ -647,6 +651,7 @@ function d() {
|
|
|
647
651
|
})]
|
|
648
652
|
}),
|
|
649
653
|
/* @__PURE__ */ l("button", {
|
|
654
|
+
type: "button",
|
|
650
655
|
onClick: qt,
|
|
651
656
|
disabled: Dt,
|
|
652
657
|
className: "flex items-center gap-1 sm:gap-2 px-2 sm:px-4 py-2 text-xs sm:text-sm font-medium text-text-primary bg-bg-surface border border-border-default rounded-lg hover:bg-action-ghost-bg-hover hover:border-border-default transition-all duration-200 shadow-sm disabled:opacity-50 disabled:cursor-not-allowed",
|
|
@@ -659,6 +664,7 @@ function d() {
|
|
|
659
664
|
})] })
|
|
660
665
|
}),
|
|
661
666
|
/* @__PURE__ */ u("button", {
|
|
667
|
+
type: "button",
|
|
662
668
|
onClick: Qt,
|
|
663
669
|
disabled: Dt,
|
|
664
670
|
className: "hidden sm:flex items-center gap-2 px-4 py-2.5 text-sm font-medium text-text-primary bg-bg-surface border border-border-default rounded-lg hover:bg-action-ghost-bg-hover hover:border-border-default transition-all duration-200 shadow-sm disabled:opacity-50 disabled:cursor-not-allowed",
|
|
@@ -669,11 +675,13 @@ function d() {
|
|
|
669
675
|
/* @__PURE__ */ u("div", {
|
|
670
676
|
className: "flex items-center border border-border-default rounded-lg overflow-hidden",
|
|
671
677
|
children: [/* @__PURE__ */ l("button", {
|
|
678
|
+
type: "button",
|
|
672
679
|
onClick: () => rt("grid"),
|
|
673
680
|
className: `p-2 transition-colors duration-200 ${nt === "grid" ? "bg-bg-accent text-text-link" : "text-text-secondary hover:bg-action-ghost-bg-hover"}`,
|
|
674
681
|
"aria-label": a(d, "files.browser.view.grid", "Grid view"),
|
|
675
682
|
children: /* @__PURE__ */ l(Ue, { className: "size-5" })
|
|
676
683
|
}), /* @__PURE__ */ l("button", {
|
|
684
|
+
type: "button",
|
|
677
685
|
onClick: () => rt("list"),
|
|
678
686
|
className: `p-2 transition-colors duration-200 ${nt === "list" ? "bg-bg-accent text-text-link" : "text-text-secondary hover:bg-action-ghost-bg-hover"}`,
|
|
679
687
|
"aria-label": a(d, "files.browser.view.list", "List view"),
|
|
@@ -689,6 +697,7 @@ function d() {
|
|
|
689
697
|
className: "text-sm font-medium text-status-success-text",
|
|
690
698
|
children: [a(d, "files.browser.search.showingResults", "Showing search results for \"{{query}}\"", { query: v }), E.data && ` (${(E.data.files?.length || 0) + (E.data.folders?.length || 0)} items)`]
|
|
691
699
|
}), /* @__PURE__ */ u("button", {
|
|
700
|
+
type: "button",
|
|
692
701
|
onClick: () => dt(""),
|
|
693
702
|
className: "flex items-center gap-2 text-status-success-text hover:text-status-success-text/80 text-sm font-medium transition-colors duration-200",
|
|
694
703
|
children: [/* @__PURE__ */ l(Ye, { className: "size-4" }), a(d, "files.browser.search.clear", "Clear search")]
|
|
@@ -707,6 +716,7 @@ function d() {
|
|
|
707
716
|
}), /* @__PURE__ */ l("div", {
|
|
708
717
|
className: "flex items-center gap-2",
|
|
709
718
|
children: _ === "bin" ? /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ l("button", {
|
|
719
|
+
type: "button",
|
|
710
720
|
onClick: async () => {
|
|
711
721
|
try {
|
|
712
722
|
for (let e of Array.from(m)) await Pt.mutateAsync({ id: e });
|
|
@@ -719,6 +729,7 @@ function d() {
|
|
|
719
729
|
className: "flex items-center gap-1.5 rounded-lg border border-status-success-border bg-bg-surface px-3 py-1.5 text-sm font-medium text-status-success-text transition-colors duration-200 hover:bg-status-success-bg-subtle",
|
|
720
730
|
children: a(d, "files.browser.selection.actions.restore", "Restore")
|
|
721
731
|
}), /* @__PURE__ */ u("button", {
|
|
732
|
+
type: "button",
|
|
722
733
|
onClick: async () => {
|
|
723
734
|
X({
|
|
724
735
|
title: a(d, "files.confirm.bulkPermanentDelete.title", "Permanently delete selected items"),
|
|
@@ -745,6 +756,7 @@ function d() {
|
|
|
745
756
|
className: "flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium text-status-error-text bg-bg-surface border border-status-error-border rounded-lg hover:bg-status-error-bg-subtle transition-colors duration-200",
|
|
746
757
|
children: [/* @__PURE__ */ l(qe, { className: "size-4" }), a(d, "files.browser.selection.actions.deletePermanently", "Delete permanently")]
|
|
747
758
|
})] }) : /* @__PURE__ */ u("button", {
|
|
759
|
+
type: "button",
|
|
748
760
|
onClick: async () => {
|
|
749
761
|
X({
|
|
750
762
|
title: a(d, "files.confirm.bulkDelete.title", "Delete selected items"),
|
|
@@ -777,6 +789,7 @@ function d() {
|
|
|
777
789
|
})
|
|
778
790
|
})]
|
|
779
791
|
}), /* @__PURE__ */ u("button", {
|
|
792
|
+
type: "button",
|
|
780
793
|
onClick: g,
|
|
781
794
|
className: "flex items-center gap-2 text-text-link hover:text-action-primary-bg-hover text-sm font-medium transition-colors duration-200",
|
|
782
795
|
children: [/* @__PURE__ */ l(Ye, { className: "size-4" }), a(d, "files.common.actions.clear", "Clear")]
|
|
@@ -836,18 +849,19 @@ function d() {
|
|
|
836
849
|
e.key === "Enter" && en(), e.key === "Escape" && (yt(!1), G(""));
|
|
837
850
|
},
|
|
838
851
|
placeholder: a(d, "files.browser.newFolderDialog.placeholder", "Folder name"),
|
|
839
|
-
autoFocus: !0,
|
|
840
852
|
className: "w-full px-4 py-3 border-2 border-border-default rounded-lg focus:outline-none focus:border-action-primary-border text-sm transition-colors duration-200"
|
|
841
853
|
}),
|
|
842
854
|
/* @__PURE__ */ u("div", {
|
|
843
855
|
className: "flex justify-end gap-2 mt-6",
|
|
844
856
|
children: [/* @__PURE__ */ l("button", {
|
|
857
|
+
type: "button",
|
|
845
858
|
onClick: () => {
|
|
846
859
|
yt(!1), G("");
|
|
847
860
|
},
|
|
848
861
|
className: "px-6 py-2.5 text-sm font-medium text-text-primary hover:bg-action-ghost-bg-hover rounded-lg transition-colors duration-200",
|
|
849
862
|
children: a(d, "files.common.actions.cancel", "Cancel")
|
|
850
863
|
}), /* @__PURE__ */ u("button", {
|
|
864
|
+
type: "button",
|
|
851
865
|
onClick: en,
|
|
852
866
|
disabled: !W.trim() || Q.isPending,
|
|
853
867
|
className: "px-6 py-2.5 text-sm font-medium text-text-inverse bg-action-primary-bg rounded-lg hover:bg-action-primary-bg-hover disabled:bg-bg-muted disabled:text-text-tertiary disabled:cursor-not-allowed transition-colors duration-200 flex items-center gap-2",
|
|
@@ -878,18 +892,19 @@ function d() {
|
|
|
878
892
|
e.key === "Enter" && Tn(), e.key === "Escape" && (N(!1), V(null), U(""));
|
|
879
893
|
},
|
|
880
894
|
placeholder: a(d, "files.browser.renameDialog.placeholder", "New name"),
|
|
881
|
-
autoFocus: !0,
|
|
882
895
|
className: "w-full px-4 py-3 border-2 border-border-default rounded-lg focus:outline-none focus:border-action-primary-border text-sm transition-colors duration-200"
|
|
883
896
|
}),
|
|
884
897
|
/* @__PURE__ */ u("div", {
|
|
885
898
|
className: "flex justify-end gap-2 mt-6",
|
|
886
899
|
children: [/* @__PURE__ */ l("button", {
|
|
900
|
+
type: "button",
|
|
887
901
|
onClick: () => {
|
|
888
902
|
N(!1), V(null), U("");
|
|
889
903
|
},
|
|
890
904
|
className: "px-6 py-2.5 text-sm font-medium text-text-primary hover:bg-action-ghost-bg-hover rounded-lg transition-colors duration-200",
|
|
891
905
|
children: a(d, "files.common.actions.cancel", "Cancel")
|
|
892
906
|
}), /* @__PURE__ */ u("button", {
|
|
907
|
+
type: "button",
|
|
893
908
|
onClick: Tn,
|
|
894
909
|
disabled: !H.trim() || H.trim() === B.name || zt.isPending || Bt.isPending,
|
|
895
910
|
className: "px-6 py-2.5 text-sm font-medium text-text-inverse bg-action-primary-bg rounded-lg hover:bg-action-primary-bg-hover disabled:bg-bg-muted disabled:text-text-tertiary disabled:cursor-not-allowed transition-colors duration-200 flex items-center gap-2",
|
|
@@ -986,6 +1001,7 @@ function d() {
|
|
|
986
1001
|
children: a(d, "files.browser.empty.search.description", "Try adjusting your search query or filters")
|
|
987
1002
|
}),
|
|
988
1003
|
/* @__PURE__ */ l("button", {
|
|
1004
|
+
type: "button",
|
|
989
1005
|
onClick: () => {
|
|
990
1006
|
dt(""), pt(void 0);
|
|
991
1007
|
},
|