@useupup/svelte 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +60 -0
- package/dist/UpupUploader.svelte +96 -0
- package/dist/UpupUploader.svelte.d.ts +5 -0
- package/dist/UpupUploader.svelte.d.ts.map +1 -0
- package/dist/assets/logos.d.ts +5 -0
- package/dist/assets/logos.d.ts.map +1 -0
- package/dist/assets/logos.js +4 -0
- package/dist/components/AudioUploader.svelte +220 -0
- package/dist/components/AudioUploader.svelte.d.ts +4 -0
- package/dist/components/AudioUploader.svelte.d.ts.map +1 -0
- package/dist/components/AudioWaveform.svelte +72 -0
- package/dist/components/AudioWaveform.svelte.d.ts +7 -0
- package/dist/components/AudioWaveform.svelte.d.ts.map +1 -0
- package/dist/components/BoxUploader.svelte +17 -0
- package/dist/components/BoxUploader.svelte.d.ts +19 -0
- package/dist/components/BoxUploader.svelte.d.ts.map +1 -0
- package/dist/components/CameraUploader.svelte +140 -0
- package/dist/components/CameraUploader.svelte.d.ts +4 -0
- package/dist/components/CameraUploader.svelte.d.ts.map +1 -0
- package/dist/components/ClientBoxUploader.svelte +60 -0
- package/dist/components/ClientBoxUploader.svelte.d.ts +19 -0
- package/dist/components/ClientBoxUploader.svelte.d.ts.map +1 -0
- package/dist/components/ClientDropboxUploader.svelte +60 -0
- package/dist/components/ClientDropboxUploader.svelte.d.ts +19 -0
- package/dist/components/ClientDropboxUploader.svelte.d.ts.map +1 -0
- package/dist/components/ClientGoogleDriveUploader.svelte +57 -0
- package/dist/components/ClientGoogleDriveUploader.svelte.d.ts +19 -0
- package/dist/components/ClientGoogleDriveUploader.svelte.d.ts.map +1 -0
- package/dist/components/ClientOneDriveUploader.svelte +60 -0
- package/dist/components/ClientOneDriveUploader.svelte.d.ts +19 -0
- package/dist/components/ClientOneDriveUploader.svelte.d.ts.map +1 -0
- package/dist/components/DefaultAddMoreIcon.svelte +11 -0
- package/dist/components/DefaultAddMoreIcon.svelte.d.ts +8 -0
- package/dist/components/DefaultAddMoreIcon.svelte.d.ts.map +1 -0
- package/dist/components/DefaultLoaderIcon.svelte +5 -0
- package/dist/components/DefaultLoaderIcon.svelte.d.ts +19 -0
- package/dist/components/DefaultLoaderIcon.svelte.d.ts.map +1 -0
- package/dist/components/DropboxUploader.svelte +17 -0
- package/dist/components/DropboxUploader.svelte.d.ts +19 -0
- package/dist/components/DropboxUploader.svelte.d.ts.map +1 -0
- package/dist/components/EmptyIcon.svelte +3 -0
- package/dist/components/EmptyIcon.svelte.d.ts +19 -0
- package/dist/components/EmptyIcon.svelte.d.ts.map +1 -0
- package/dist/components/FileHero.svelte +152 -0
- package/dist/components/FileHero.svelte.d.ts +8 -0
- package/dist/components/FileHero.svelte.d.ts.map +1 -0
- package/dist/components/FileIcon.svelte +23 -0
- package/dist/components/FileIcon.svelte.d.ts +8 -0
- package/dist/components/FileIcon.svelte.d.ts.map +1 -0
- package/dist/components/FileItem.svelte +95 -0
- package/dist/components/FileItem.svelte.d.ts +12 -0
- package/dist/components/FileItem.svelte.d.ts.map +1 -0
- package/dist/components/FileList.svelte +442 -0
- package/dist/components/FileList.svelte.d.ts +4 -0
- package/dist/components/FileList.svelte.d.ts.map +1 -0
- package/dist/components/FilePreview.svelte +218 -0
- package/dist/components/FilePreview.svelte.d.ts +17 -0
- package/dist/components/FilePreview.svelte.d.ts.map +1 -0
- package/dist/components/FilePreviewPortal.svelte +189 -0
- package/dist/components/FilePreviewPortal.svelte.d.ts +12 -0
- package/dist/components/FilePreviewPortal.svelte.d.ts.map +1 -0
- package/dist/components/FilePreviewThumbnail.svelte +87 -0
- package/dist/components/FilePreviewThumbnail.svelte.d.ts +17 -0
- package/dist/components/FilePreviewThumbnail.svelte.d.ts.map +1 -0
- package/dist/components/FileRow.svelte +192 -0
- package/dist/components/FileRow.svelte.d.ts +10 -0
- package/dist/components/FileRow.svelte.d.ts.map +1 -0
- package/dist/components/GoogleDriveUploader.svelte +17 -0
- package/dist/components/GoogleDriveUploader.svelte.d.ts +19 -0
- package/dist/components/GoogleDriveUploader.svelte.d.ts.map +1 -0
- package/dist/components/Icon.svelte +24 -0
- package/dist/components/Icon.svelte.d.ts +10 -0
- package/dist/components/Icon.svelte.d.ts.map +1 -0
- package/dist/components/Icons.d.ts +10 -0
- package/dist/components/Icons.d.ts.map +1 -0
- package/dist/components/Icons.js +9 -0
- package/dist/components/ImageEditorStub.svelte +3 -0
- package/dist/components/ImageEditorStub.svelte.d.ts +19 -0
- package/dist/components/ImageEditorStub.svelte.d.ts.map +1 -0
- package/dist/components/OneDriveUploader.svelte +17 -0
- package/dist/components/OneDriveUploader.svelte.d.ts +19 -0
- package/dist/components/OneDriveUploader.svelte.d.ts.map +1 -0
- package/dist/components/ScreenCaptureUploader.svelte +254 -0
- package/dist/components/ScreenCaptureUploader.svelte.d.ts +4 -0
- package/dist/components/ScreenCaptureUploader.svelte.d.ts.map +1 -0
- package/dist/components/ServerModeDriveUploader.svelte +250 -0
- package/dist/components/ServerModeDriveUploader.svelte.d.ts +10 -0
- package/dist/components/ServerModeDriveUploader.svelte.d.ts.map +1 -0
- package/dist/components/SourceSelector.svelte +292 -0
- package/dist/components/SourceSelector.svelte.d.ts +19 -0
- package/dist/components/SourceSelector.svelte.d.ts.map +1 -0
- package/dist/components/SourceView.svelte +100 -0
- package/dist/components/SourceView.svelte.d.ts +4 -0
- package/dist/components/SourceView.svelte.d.ts.map +1 -0
- package/dist/components/TrashIcon.svelte +11 -0
- package/dist/components/TrashIcon.svelte.d.ts +8 -0
- package/dist/components/TrashIcon.svelte.d.ts.map +1 -0
- package/dist/components/UploaderPanel.svelte +363 -0
- package/dist/components/UploaderPanel.svelte.d.ts +4 -0
- package/dist/components/UploaderPanel.svelte.d.ts.map +1 -0
- package/dist/components/UrlUploader.svelte +71 -0
- package/dist/components/UrlUploader.svelte.d.ts +4 -0
- package/dist/components/UrlUploader.svelte.d.ts.map +1 -0
- package/dist/components/icons/AudioIcon.svelte +5 -0
- package/dist/components/icons/AudioIcon.svelte.d.ts +7 -0
- package/dist/components/icons/AudioIcon.svelte.d.ts.map +1 -0
- package/dist/components/icons/BoxIcon.svelte +5 -0
- package/dist/components/icons/BoxIcon.svelte.d.ts +7 -0
- package/dist/components/icons/BoxIcon.svelte.d.ts.map +1 -0
- package/dist/components/icons/CameraIcon.svelte +5 -0
- package/dist/components/icons/CameraIcon.svelte.d.ts +7 -0
- package/dist/components/icons/CameraIcon.svelte.d.ts.map +1 -0
- package/dist/components/icons/DropboxIcon.svelte +5 -0
- package/dist/components/icons/DropboxIcon.svelte.d.ts +7 -0
- package/dist/components/icons/DropboxIcon.svelte.d.ts.map +1 -0
- package/dist/components/icons/GoogleDriveIcon.svelte +5 -0
- package/dist/components/icons/GoogleDriveIcon.svelte.d.ts +7 -0
- package/dist/components/icons/GoogleDriveIcon.svelte.d.ts.map +1 -0
- package/dist/components/icons/LinkIcon.svelte +5 -0
- package/dist/components/icons/LinkIcon.svelte.d.ts +7 -0
- package/dist/components/icons/LinkIcon.svelte.d.ts.map +1 -0
- package/dist/components/icons/MyDeviceIcon.svelte +5 -0
- package/dist/components/icons/MyDeviceIcon.svelte.d.ts +7 -0
- package/dist/components/icons/MyDeviceIcon.svelte.d.ts.map +1 -0
- package/dist/components/icons/OneDriveIcon.svelte +5 -0
- package/dist/components/icons/OneDriveIcon.svelte.d.ts +7 -0
- package/dist/components/icons/OneDriveIcon.svelte.d.ts.map +1 -0
- package/dist/components/icons/ScreenCaptureIcon.svelte +5 -0
- package/dist/components/icons/ScreenCaptureIcon.svelte.d.ts +7 -0
- package/dist/components/icons/ScreenCaptureIcon.svelte.d.ts.map +1 -0
- package/dist/components/shared/DriveAuthFallback.svelte +60 -0
- package/dist/components/shared/DriveAuthFallback.svelte.d.ts +12 -0
- package/dist/components/shared/DriveAuthFallback.svelte.d.ts.map +1 -0
- package/dist/components/shared/DriveBrowser.svelte +209 -0
- package/dist/components/shared/DriveBrowser.svelte.d.ts +25 -0
- package/dist/components/shared/DriveBrowser.svelte.d.ts.map +1 -0
- package/dist/components/shared/DriveBrowserHeader.svelte +191 -0
- package/dist/components/shared/DriveBrowserHeader.svelte.d.ts +14 -0
- package/dist/components/shared/DriveBrowserHeader.svelte.d.ts.map +1 -0
- package/dist/components/shared/DriveBrowserIcon.svelte +39 -0
- package/dist/components/shared/DriveBrowserIcon.svelte.d.ts +8 -0
- package/dist/components/shared/DriveBrowserIcon.svelte.d.ts.map +1 -0
- package/dist/components/shared/DriveBrowserItem.svelte +63 -0
- package/dist/components/shared/DriveBrowserItem.svelte.d.ts +10 -0
- package/dist/components/shared/DriveBrowserItem.svelte.d.ts.map +1 -0
- package/dist/components/shared/FileSuccessCheck.svelte +47 -0
- package/dist/components/shared/FileSuccessCheck.svelte.d.ts +10 -0
- package/dist/components/shared/FileSuccessCheck.svelte.d.ts.map +1 -0
- package/dist/components/shared/ProgressBar.svelte +81 -0
- package/dist/components/shared/ProgressBar.svelte.d.ts +10 -0
- package/dist/components/shared/ProgressBar.svelte.d.ts.map +1 -0
- package/dist/components/shared/SourceViewContainer.svelte +27 -0
- package/dist/components/shared/SourceViewContainer.svelte.d.ts +10 -0
- package/dist/components/shared/SourceViewContainer.svelte.d.ts.map +1 -0
- package/dist/components/shared/UploaderHeader.svelte +156 -0
- package/dist/components/shared/UploaderHeader.svelte.d.ts +13 -0
- package/dist/components/shared/UploaderHeader.svelte.d.ts.map +1 -0
- package/dist/composables/use-tiles-per-row.d.ts +19 -0
- package/dist/composables/use-tiles-per-row.d.ts.map +1 -0
- package/dist/composables/use-tiles-per-row.js +30 -0
- package/dist/composables/useBox.d.ts +28 -0
- package/dist/composables/useBox.d.ts.map +1 -0
- package/dist/composables/useBox.js +61 -0
- package/dist/composables/useCameraUploader.d.ts +23 -0
- package/dist/composables/useCameraUploader.d.ts.map +1 -0
- package/dist/composables/useCameraUploader.js +114 -0
- package/dist/composables/useDropbox.d.ts +28 -0
- package/dist/composables/useDropbox.d.ts.map +1 -0
- package/dist/composables/useDropbox.js +61 -0
- package/dist/composables/useFetchFileByUrl.d.ts +9 -0
- package/dist/composables/useFetchFileByUrl.d.ts.map +1 -0
- package/dist/composables/useFetchFileByUrl.js +33 -0
- package/dist/composables/useGoogleDrive.d.ts +28 -0
- package/dist/composables/useGoogleDrive.d.ts.map +1 -0
- package/dist/composables/useGoogleDrive.js +65 -0
- package/dist/composables/useOneDrive.d.ts +29 -0
- package/dist/composables/useOneDrive.d.ts.map +1 -0
- package/dist/composables/useOneDrive.js +64 -0
- package/dist/composables/useSSEProcessing.d.ts +20 -0
- package/dist/composables/useSSEProcessing.d.ts.map +1 -0
- package/dist/composables/useSSEProcessing.js +17 -0
- package/dist/composables/useServerModeDrive.d.ts +17 -0
- package/dist/composables/useServerModeDrive.d.ts.map +1 -0
- package/dist/composables/useServerModeDrive.js +33 -0
- package/dist/composables/useSourceSelector.d.ts +13 -0
- package/dist/composables/useSourceSelector.d.ts.map +1 -0
- package/dist/composables/useSourceSelector.js +36 -0
- package/dist/composables/useUploaderPanel.d.ts +12 -0
- package/dist/composables/useUploaderPanel.d.ts.map +1 -0
- package/dist/composables/useUploaderPanel.js +43 -0
- package/dist/context/create-uploader-context.d.ts +4 -0
- package/dist/context/create-uploader-context.d.ts.map +1 -0
- package/dist/context/create-uploader-context.js +324 -0
- package/dist/context/source-view-header-extra.d.ts +14 -0
- package/dist/context/source-view-header-extra.d.ts.map +1 -0
- package/dist/context/source-view-header-extra.js +41 -0
- package/dist/context/uploader-context.d.ts +109 -0
- package/dist/context/uploader-context.d.ts.map +1 -0
- package/dist/context/uploader-context.js +96 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/lib/constants.d.ts +13 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +67 -0
- package/dist/lib/to-readable.d.ts +14 -0
- package/dist/lib/to-readable.d.ts.map +1 -0
- package/dist/lib/to-readable.js +15 -0
- package/dist/lib/view-mode.d.ts +24 -0
- package/dist/lib/view-mode.d.ts.map +1 -0
- package/dist/lib/view-mode.js +31 -0
- package/dist/shared/types.d.ts +15 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +1 -0
- package/dist/styles.d.ts +4 -0
- package/dist/tailwind-prefixed.css +2479 -0
- package/dist/tailwind.css +74 -0
- package/dist/use-upup-upload.d.ts +38 -0
- package/dist/use-upup-upload.d.ts.map +1 -0
- package/dist/use-upup-upload.js +81 -0
- package/package.json +101 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import useGoogleDrive from '../composables/useGoogleDrive'
|
|
3
|
+
import DriveAuthFallback from './shared/DriveAuthFallback.svelte'
|
|
4
|
+
import DriveBrowser from './shared/DriveBrowser.svelte'
|
|
5
|
+
|
|
6
|
+
const {
|
|
7
|
+
user,
|
|
8
|
+
googleFiles: driveFiles,
|
|
9
|
+
handleSignOut,
|
|
10
|
+
token,
|
|
11
|
+
authCancelled,
|
|
12
|
+
retryAuth,
|
|
13
|
+
isAuthReady,
|
|
14
|
+
path,
|
|
15
|
+
setPath,
|
|
16
|
+
isClickLoading,
|
|
17
|
+
handleClick,
|
|
18
|
+
selectedFiles,
|
|
19
|
+
showLoader,
|
|
20
|
+
handleSubmit,
|
|
21
|
+
handleCancelDownload,
|
|
22
|
+
onSelectCurrentFolder,
|
|
23
|
+
error,
|
|
24
|
+
hasMore,
|
|
25
|
+
isLoadingMore,
|
|
26
|
+
loadMore,
|
|
27
|
+
} = useGoogleDrive()
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
{#if !$token && ($authCancelled || $isAuthReady)}
|
|
31
|
+
<DriveAuthFallback
|
|
32
|
+
providerName="Google Drive"
|
|
33
|
+
onRetry={retryAuth}
|
|
34
|
+
{error}
|
|
35
|
+
dataUpupSlot="google-drive-uploader"
|
|
36
|
+
/>
|
|
37
|
+
{:else}
|
|
38
|
+
<DriveBrowser
|
|
39
|
+
{driveFiles}
|
|
40
|
+
{user}
|
|
41
|
+
{handleSignOut}
|
|
42
|
+
dataUpupSlot="google-drive-uploader"
|
|
43
|
+
{path}
|
|
44
|
+
{setPath}
|
|
45
|
+
{isClickLoading}
|
|
46
|
+
{handleClick}
|
|
47
|
+
{selectedFiles}
|
|
48
|
+
{showLoader}
|
|
49
|
+
{handleSubmit}
|
|
50
|
+
{handleCancelDownload}
|
|
51
|
+
{onSelectCurrentFolder}
|
|
52
|
+
{error}
|
|
53
|
+
{hasMore}
|
|
54
|
+
{isLoadingMore}
|
|
55
|
+
{loadMore}
|
|
56
|
+
/>
|
|
57
|
+
{/if}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const ClientGoogleDriveUploader: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type ClientGoogleDriveUploader = InstanceType<typeof ClientGoogleDriveUploader>;
|
|
18
|
+
export default ClientGoogleDriveUploader;
|
|
19
|
+
//# sourceMappingURL=ClientGoogleDriveUploader.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientGoogleDriveUploader.svelte.d.ts","sourceRoot":"","sources":["../../src/components/ClientGoogleDriveUploader.svelte.ts"],"names":[],"mappings":"AA4CA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,yBAAyB;;kBAA+E,CAAC;AAC7F,KAAK,yBAAyB,GAAG,YAAY,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAClF,eAAe,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { useOneDrive } from '../composables/useOneDrive'
|
|
3
|
+
import DriveAuthFallback from './shared/DriveAuthFallback.svelte'
|
|
4
|
+
import DriveBrowser from './shared/DriveBrowser.svelte'
|
|
5
|
+
|
|
6
|
+
const {
|
|
7
|
+
user,
|
|
8
|
+
oneDriveFiles: driveFiles,
|
|
9
|
+
signOut,
|
|
10
|
+
token,
|
|
11
|
+
isAuthenticated,
|
|
12
|
+
authenticate,
|
|
13
|
+
isLoading,
|
|
14
|
+
path,
|
|
15
|
+
setPath,
|
|
16
|
+
isClickLoading,
|
|
17
|
+
handleClick,
|
|
18
|
+
selectedFiles,
|
|
19
|
+
showLoader,
|
|
20
|
+
handleSubmit,
|
|
21
|
+
handleCancelDownload,
|
|
22
|
+
onSelectCurrentFolder,
|
|
23
|
+
error,
|
|
24
|
+
hasMore,
|
|
25
|
+
isLoadingMore,
|
|
26
|
+
loadMore,
|
|
27
|
+
} = useOneDrive()
|
|
28
|
+
|
|
29
|
+
async function handleSignOut() {
|
|
30
|
+
signOut()
|
|
31
|
+
}
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
{#if !$isAuthenticated && !$token && !$isLoading}
|
|
35
|
+
<DriveAuthFallback
|
|
36
|
+
providerName="OneDrive"
|
|
37
|
+
onRetry={authenticate}
|
|
38
|
+
dataUpupSlot="one-drive-uploader"
|
|
39
|
+
/>
|
|
40
|
+
{:else}
|
|
41
|
+
<DriveBrowser
|
|
42
|
+
{driveFiles}
|
|
43
|
+
{user}
|
|
44
|
+
{handleSignOut}
|
|
45
|
+
dataUpupSlot="one-drive-uploader"
|
|
46
|
+
{path}
|
|
47
|
+
{setPath}
|
|
48
|
+
{isClickLoading}
|
|
49
|
+
{handleClick}
|
|
50
|
+
{selectedFiles}
|
|
51
|
+
{showLoader}
|
|
52
|
+
{handleSubmit}
|
|
53
|
+
{handleCancelDownload}
|
|
54
|
+
{onSelectCurrentFolder}
|
|
55
|
+
{error}
|
|
56
|
+
{hasMore}
|
|
57
|
+
{isLoadingMore}
|
|
58
|
+
{loadMore}
|
|
59
|
+
/>
|
|
60
|
+
{/if}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const ClientOneDriveUploader: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type ClientOneDriveUploader = InstanceType<typeof ClientOneDriveUploader>;
|
|
18
|
+
export default ClientOneDriveUploader;
|
|
19
|
+
//# sourceMappingURL=ClientOneDriveUploader.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientOneDriveUploader.svelte.d.ts","sourceRoot":"","sources":["../../src/components/ClientOneDriveUploader.svelte.ts"],"names":[],"mappings":"AAgDA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,sBAAsB;;kBAA+E,CAAC;AAC1F,KAAK,sBAAsB,GAAG,YAAY,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC5E,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
// Default 'add more' glyph — renders the shared registry 'plus' icon (parity with
|
|
3
|
+
// React's DefaultPlusIconComponent). Forwards the consumer's class/size to the svg.
|
|
4
|
+
import Icon from './Icon.svelte'
|
|
5
|
+
let {
|
|
6
|
+
class: className = '',
|
|
7
|
+
size = undefined,
|
|
8
|
+
}: { class?: string; size?: number } = $props()
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<Icon name="plus" class={className} {size} />
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
class?: string;
|
|
3
|
+
size?: number;
|
|
4
|
+
};
|
|
5
|
+
declare const DefaultAddMoreIcon: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type DefaultAddMoreIcon = ReturnType<typeof DefaultAddMoreIcon>;
|
|
7
|
+
export default DefaultAddMoreIcon;
|
|
8
|
+
//# sourceMappingURL=DefaultAddMoreIcon.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultAddMoreIcon.svelte.d.ts","sourceRoot":"","sources":["../../src/components/DefaultAddMoreIcon.svelte.ts"],"names":[],"mappings":"AAOC,KAAK,gBAAgB,GAAI;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAe5D,QAAA,MAAM,kBAAkB,sDAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const DefaultLoaderIcon: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type DefaultLoaderIcon = InstanceType<typeof DefaultLoaderIcon>;
|
|
18
|
+
export default DefaultLoaderIcon;
|
|
19
|
+
//# sourceMappingURL=DefaultLoaderIcon.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultLoaderIcon.svelte.d.ts","sourceRoot":"","sources":["../../src/components/DefaultLoaderIcon.svelte.ts"],"names":[],"mappings":"AAaA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,iBAAiB;;kBAA+E,CAAC;AACrF,KAAK,iBAAiB,GAAG,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { useUploaderRuntime, useUploaderSource } from '../context/uploader-context'
|
|
3
|
+
import ClientDropboxUploader from './ClientDropboxUploader.svelte'
|
|
4
|
+
import ServerModeDriveUploader from './ServerModeDriveUploader.svelte'
|
|
5
|
+
|
|
6
|
+
const { mode } = useUploaderRuntime()
|
|
7
|
+
const { setActiveSource } = useUploaderSource()
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
{#if mode === 'server'}
|
|
11
|
+
<ServerModeDriveUploader
|
|
12
|
+
provider="dropbox"
|
|
13
|
+
onBack={() => setActiveSource(undefined)}
|
|
14
|
+
/>
|
|
15
|
+
{:else}
|
|
16
|
+
<ClientDropboxUploader />
|
|
17
|
+
{/if}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const DropboxUploader: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type DropboxUploader = InstanceType<typeof DropboxUploader>;
|
|
18
|
+
export default DropboxUploader;
|
|
19
|
+
//# sourceMappingURL=DropboxUploader.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DropboxUploader.svelte.d.ts","sourceRoot":"","sources":["../../src/components/DropboxUploader.svelte.ts"],"names":[],"mappings":"AAwBA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,eAAe;;kBAA+E,CAAC;AACnF,KAAK,eAAe,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC;AAC9D,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const EmptyIcon: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type EmptyIcon = InstanceType<typeof EmptyIcon>;
|
|
18
|
+
export default EmptyIcon;
|
|
19
|
+
//# sourceMappingURL=EmptyIcon.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyIcon.svelte.d.ts","sourceRoot":"","sources":["../../src/components/EmptyIcon.svelte.ts"],"names":[],"mappings":"AASA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,SAAS;;kBAA+E,CAAC;AAC7E,KAAK,SAAS,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn, isFileRemovalLocked } from '@useupup/core/internal'
|
|
3
|
+
import { UploadStatus, type UploadFile, type Translations } from '@useupup/core'
|
|
4
|
+
import { fileGetExtension, fileGetIsImage } from '@useupup/core/internal'
|
|
5
|
+
import {
|
|
6
|
+
useUploaderFiles,
|
|
7
|
+
useUploaderI18n,
|
|
8
|
+
useUploaderOptions,
|
|
9
|
+
useUploaderTheme,
|
|
10
|
+
useUploaderUploadControls,
|
|
11
|
+
} from '../context/uploader-context'
|
|
12
|
+
import FileIcon from './FileIcon.svelte'
|
|
13
|
+
import ProgressBar from './shared/ProgressBar.svelte'
|
|
14
|
+
import FileSuccessCheck from './shared/FileSuccessCheck.svelte'
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Single-file HERO preview (spec §4 state 3, states-tour-v2.html "single file").
|
|
18
|
+
* One visual fills the fixed-height content area with a bottom scrim caption.
|
|
19
|
+
* The panel is fixed-height by ruling, so the media MUST stay bounded with
|
|
20
|
+
* `min-h-0 flex-1 object-contain` — the repo's #1 visual trap.
|
|
21
|
+
*/
|
|
22
|
+
let { file }: { file: UploadFile } = $props()
|
|
23
|
+
|
|
24
|
+
const { handleFileRemove } = useUploaderFiles()
|
|
25
|
+
const { translations: tr } = useUploaderI18n()
|
|
26
|
+
const { icons: { FileDeleteIcon } } = useUploaderOptions()
|
|
27
|
+
const { isDark: dark } = useUploaderTheme()
|
|
28
|
+
const { upload: { filesProgressMap } } = useUploaderUploadControls()
|
|
29
|
+
|
|
30
|
+
const isImage = $derived(fileGetIsImage(file.type ?? ''))
|
|
31
|
+
const isVideo = $derived((file.type ?? '').startsWith('video/'))
|
|
32
|
+
const extension = $derived(fileGetExtension(file.type ?? '', file.name))
|
|
33
|
+
const progress = $derived.by(() => {
|
|
34
|
+
const p = $filesProgressMap[file.id]
|
|
35
|
+
const loaded = p?.loaded ?? NaN
|
|
36
|
+
const total = p?.total ?? NaN
|
|
37
|
+
const pct = Math.floor((loaded / total) * 100)
|
|
38
|
+
// No progress entry ⇒ NaN; total === 0 ⇒ Infinity. Either would render
|
|
39
|
+
// width:NaN%/aria-valuenow=NaN in ProgressBar while an upload is active.
|
|
40
|
+
return Number.isFinite(pct) ? pct : 0
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
function formatFileSize(bytes: number | undefined, t: Translations): string {
|
|
44
|
+
if (!bytes || bytes === 0) return t.zeroBytes
|
|
45
|
+
const k = 1024
|
|
46
|
+
const sizes = [t.bytes, t.kb, t.mb, t.gb]
|
|
47
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k))
|
|
48
|
+
return Math.round((bytes / Math.pow(k, i)) * 10) / 10 + ' ' + sizes[i]
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function onRemove(e: MouseEvent) {
|
|
52
|
+
e.stopPropagation()
|
|
53
|
+
handleFileRemove(file.id)
|
|
54
|
+
}
|
|
55
|
+
</script>
|
|
56
|
+
|
|
57
|
+
<div
|
|
58
|
+
data-testid="upup-file-hero"
|
|
59
|
+
data-upup-slot="file-hero"
|
|
60
|
+
role="listitem"
|
|
61
|
+
class={cn(
|
|
62
|
+
'upup-relative upup-flex upup-min-h-0 upup-flex-1 upup-flex-col upup-overflow-hidden upup-rounded-2xl upup-ring-1',
|
|
63
|
+
$dark
|
|
64
|
+
? 'upup-bg-white/[0.03] upup-ring-white/[0.08]'
|
|
65
|
+
: 'upup-bg-black/[0.04] upup-ring-black/[0.06]',
|
|
66
|
+
)}
|
|
67
|
+
>
|
|
68
|
+
{#if isImage}
|
|
69
|
+
<img
|
|
70
|
+
src={file.url ?? ''}
|
|
71
|
+
alt={file.name}
|
|
72
|
+
class="upup-min-h-0 upup-flex-1 upup-object-contain"
|
|
73
|
+
/>
|
|
74
|
+
{:else if isVideo}
|
|
75
|
+
<!-- preload="metadata" paints the first frame — a real thumbnail without
|
|
76
|
+
controls chrome. Muted + playsInline keep mobile browsers from
|
|
77
|
+
hijacking it into a player. -->
|
|
78
|
+
<video
|
|
79
|
+
src={file.url ?? ''}
|
|
80
|
+
muted
|
|
81
|
+
playsinline
|
|
82
|
+
preload="metadata"
|
|
83
|
+
class="upup-pointer-events-none upup-min-h-0 upup-flex-1 upup-object-contain"
|
|
84
|
+
></video>
|
|
85
|
+
{:else}
|
|
86
|
+
<div
|
|
87
|
+
class="upup-flex upup-min-h-0 upup-flex-1 upup-items-center upup-justify-center upup-bg-gradient-to-br upup-from-[#0ea5e9]/10 upup-to-[#7c3aed]/10"
|
|
88
|
+
>
|
|
89
|
+
<FileIcon {extension} />
|
|
90
|
+
</div>
|
|
91
|
+
{/if}
|
|
92
|
+
|
|
93
|
+
{#if file.status === UploadStatus.SUCCESSFUL}
|
|
94
|
+
<FileSuccessCheck class="upup-absolute upup-left-3 upup-top-3 upup-z-10" />
|
|
95
|
+
{/if}
|
|
96
|
+
|
|
97
|
+
<!-- Delete is gone once the file has uploaded successfully — the
|
|
98
|
+
completion check (top-left) is the only remaining overlay mark. -->
|
|
99
|
+
{#if file.status !== UploadStatus.SUCCESSFUL}
|
|
100
|
+
<button
|
|
101
|
+
class={cn(
|
|
102
|
+
'upup-fx-remove upup-fx-press upup-absolute upup-right-3 upup-top-3 upup-z-10',
|
|
103
|
+
'upup-flex upup-h-[34px] upup-w-[34px] upup-items-center upup-justify-center',
|
|
104
|
+
'upup-rounded-[9px] upup-bg-[#04080f]/40 upup-text-[#e2e8f0]',
|
|
105
|
+
'hover:upup-bg-[#04080f]/65',
|
|
106
|
+
'disabled:upup-cursor-not-allowed disabled:upup-opacity-50',
|
|
107
|
+
)}
|
|
108
|
+
onclick={onRemove}
|
|
109
|
+
type="button"
|
|
110
|
+
disabled={isFileRemovalLocked(progress, file.status)}
|
|
111
|
+
aria-label={tr.removeFile}
|
|
112
|
+
data-testid="upup-file-remove"
|
|
113
|
+
>
|
|
114
|
+
<FileDeleteIcon class="upup-h-5 upup-w-5" />
|
|
115
|
+
</button>
|
|
116
|
+
{/if}
|
|
117
|
+
|
|
118
|
+
<!-- Caption scrim: theme-aware (a black scrim over a light hero read as
|
|
119
|
+
a dark-mode leak). The progress bar lives INSIDE the scrim flow so
|
|
120
|
+
it can never overlap the name/size lines. -->
|
|
121
|
+
<div
|
|
122
|
+
class={cn(
|
|
123
|
+
'upup-pointer-events-none upup-absolute upup-inset-x-0 upup-bottom-0 upup-bg-gradient-to-t upup-to-transparent upup-px-[18px] upup-pb-3.5 upup-pt-4',
|
|
124
|
+
$dark
|
|
125
|
+
? 'upup-from-[#04080f]/[0.86] upup-via-[#04080f]/50'
|
|
126
|
+
: 'upup-from-white/[0.92] upup-via-white/60',
|
|
127
|
+
)}
|
|
128
|
+
>
|
|
129
|
+
<div
|
|
130
|
+
class={cn(
|
|
131
|
+
'upup-truncate upup-text-[13px] upup-font-semibold',
|
|
132
|
+
$dark ? 'upup-text-[#e2e8f0]' : 'upup-text-[#1e293b]',
|
|
133
|
+
)}
|
|
134
|
+
>
|
|
135
|
+
{file.name}
|
|
136
|
+
</div>
|
|
137
|
+
<div
|
|
138
|
+
class={cn(
|
|
139
|
+
'upup-mt-0.5 upup-text-[12px]',
|
|
140
|
+
$dark ? 'upup-text-[#94a3b8]' : 'upup-text-[#64748b]',
|
|
141
|
+
)}
|
|
142
|
+
>
|
|
143
|
+
{formatFileSize(file.size, tr)}
|
|
144
|
+
</div>
|
|
145
|
+
<ProgressBar
|
|
146
|
+
class={cn('upup-mt-2', $dark ? 'upup-text-white' : 'upup-text-[#0f172a]')}
|
|
147
|
+
progressBarClassName="upup-rounded"
|
|
148
|
+
{progress}
|
|
149
|
+
showValue
|
|
150
|
+
/>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type UploadFile } from '@useupup/core';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
file: UploadFile;
|
|
4
|
+
};
|
|
5
|
+
declare const FileHero: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type FileHero = ReturnType<typeof FileHero>;
|
|
7
|
+
export default FileHero;
|
|
8
|
+
//# sourceMappingURL=FileHero.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileHero.svelte.d.ts","sourceRoot":"","sources":["../../src/components/FileHero.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,UAAU,EAAqB,MAAM,eAAe,CAAA;AAa/E,KAAK,gBAAgB,GAAI;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AA8G/C,QAAA,MAAM,QAAQ,sDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { fileTypeIconName } from '@useupup/core'
|
|
3
|
+
import { cn } from '@useupup/core/internal'
|
|
4
|
+
import { useUploaderTheme } from '../context/uploader-context'
|
|
5
|
+
import Icon from './Icon.svelte'
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
extension = '',
|
|
9
|
+
class: className = '',
|
|
10
|
+
}: { extension?: string; class?: string | undefined } = $props()
|
|
11
|
+
|
|
12
|
+
const { isDark: dark } = useUploaderTheme()
|
|
13
|
+
|
|
14
|
+
const iconClass = $derived(
|
|
15
|
+
cn('upup-text-5xl upup-text-[#0284c7]', className, {
|
|
16
|
+
'upup-text-[#38bdf8] dark:upup-text-[#38bdf8]': $dark,
|
|
17
|
+
}),
|
|
18
|
+
)
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<span class="upup-inline-flex" data-testid="upup-file-icon" data-upup-slot="file-icon">
|
|
22
|
+
<Icon name={fileTypeIconName(extension)} class={iconClass} />
|
|
23
|
+
</span>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
extension?: string;
|
|
3
|
+
class?: string | undefined;
|
|
4
|
+
};
|
|
5
|
+
declare const FileIcon: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type FileIcon = ReturnType<typeof FileIcon>;
|
|
7
|
+
export default FileIcon;
|
|
8
|
+
//# sourceMappingURL=FileIcon.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileIcon.svelte.d.ts","sourceRoot":"","sources":["../../src/components/FileIcon.svelte.ts"],"names":[],"mappings":"AAQC,KAAK,gBAAgB,GAAI;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AA2B7E,QAAA,MAAM,QAAQ,sDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { UploadFile } from '@useupup/core'
|
|
3
|
+
import { cn } from '@useupup/core/internal'
|
|
4
|
+
import {
|
|
5
|
+
useUploaderFiles,
|
|
6
|
+
useUploaderOptions,
|
|
7
|
+
useUploaderRuntime,
|
|
8
|
+
useUploaderTheme,
|
|
9
|
+
useUploaderView,
|
|
10
|
+
} from '../context/uploader-context'
|
|
11
|
+
import FilePreview from './FilePreview.svelte'
|
|
12
|
+
import FilePreviewPortal from './FilePreviewPortal.svelte'
|
|
13
|
+
import FileRow from './FileRow.svelte'
|
|
14
|
+
|
|
15
|
+
let {
|
|
16
|
+
file,
|
|
17
|
+
index = 0,
|
|
18
|
+
forcedList = false,
|
|
19
|
+
}: {
|
|
20
|
+
file: UploadFile
|
|
21
|
+
/** Position in the sorted list — drives the entrance stagger. */
|
|
22
|
+
index?: number
|
|
23
|
+
/** True when the panel forces the row list (tiles don't fit one row). */
|
|
24
|
+
forcedList?: boolean
|
|
25
|
+
} = $props()
|
|
26
|
+
|
|
27
|
+
const { core } = useUploaderRuntime()
|
|
28
|
+
const { files, leavingFileIds } = useUploaderFiles()
|
|
29
|
+
const { viewMode } = useUploaderView()
|
|
30
|
+
const { onFileClick } = useUploaderOptions()
|
|
31
|
+
const { slotOverrides: slotClasses } = useUploaderTheme()
|
|
32
|
+
|
|
33
|
+
let showPreviewPortal = $state(false)
|
|
34
|
+
let canPreview = $state(false)
|
|
35
|
+
|
|
36
|
+
const leaving = $derived($leavingFileIds.has(file.id))
|
|
37
|
+
|
|
38
|
+
function openPreviewPortal() {
|
|
39
|
+
showPreviewPortal = true
|
|
40
|
+
core?.emit('file-preview-open', { fileId: file.id, fileName: file.name })
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function closePreviewPortal() {
|
|
44
|
+
showPreviewPortal = false
|
|
45
|
+
core?.emit('file-preview-close', { fileId: file.id, fileName: file.name })
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function onStopPropagation(e: MouseEvent) {
|
|
49
|
+
e.stopPropagation()
|
|
50
|
+
}
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<div
|
|
54
|
+
data-testid="upup-file-item"
|
|
55
|
+
data-upup-slot="file-item"
|
|
56
|
+
role="listitem"
|
|
57
|
+
class={cn(
|
|
58
|
+
'upup-animate-fx-enter',
|
|
59
|
+
'upup-relative upup-flex upup-flex-1 upup-flex-col upup-items-start upup-gap-1 upup-bg-transparent',
|
|
60
|
+
leaving && 'upup-animate-fx-exit upup-overflow-hidden',
|
|
61
|
+
{
|
|
62
|
+
[$slotClasses.fileItemMultiple ?? '']: !!$slotClasses.fileItemMultiple && $files.size > 1,
|
|
63
|
+
[$slotClasses.fileItemSingle ?? '']: !!$slotClasses.fileItemSingle && $files.size === 1,
|
|
64
|
+
},
|
|
65
|
+
)}
|
|
66
|
+
style={leaving ? undefined : `animation-delay: ${Math.min(index, 8) * 40}ms`}
|
|
67
|
+
>
|
|
68
|
+
{#if $viewMode === 'list' || forcedList}
|
|
69
|
+
<FileRow {file} {index} />
|
|
70
|
+
{:else}
|
|
71
|
+
<FilePreview
|
|
72
|
+
fileName={file.name}
|
|
73
|
+
fileType={file.type ?? ''}
|
|
74
|
+
fileId={file.id}
|
|
75
|
+
fileUrl={file.url ?? ''}
|
|
76
|
+
fileSize={file.size}
|
|
77
|
+
{index}
|
|
78
|
+
{canPreview}
|
|
79
|
+
onRequestPreview={openPreviewPortal}
|
|
80
|
+
onUpdateCanPreview={(val) => (canPreview = val)}
|
|
81
|
+
onclick={() => onFileClick(file)}
|
|
82
|
+
/>
|
|
83
|
+
|
|
84
|
+
{#if canPreview && showPreviewPortal}
|
|
85
|
+
<FilePreviewPortal
|
|
86
|
+
fileType={file.type ?? ''}
|
|
87
|
+
fileUrl={file.url ?? ''}
|
|
88
|
+
fileName={file.name}
|
|
89
|
+
fileSize={file.size}
|
|
90
|
+
onClose={closePreviewPortal}
|
|
91
|
+
{onStopPropagation}
|
|
92
|
+
/>
|
|
93
|
+
{/if}
|
|
94
|
+
{/if}
|
|
95
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { UploadFile } from '@useupup/core';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
file: UploadFile;
|
|
4
|
+
/** Position in the sorted list — drives the entrance stagger. */
|
|
5
|
+
index?: number;
|
|
6
|
+
/** True when the panel forces the row list (tiles don't fit one row). */
|
|
7
|
+
forcedList?: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare const FileItem: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
10
|
+
type FileItem = ReturnType<typeof FileItem>;
|
|
11
|
+
export default FileItem;
|
|
12
|
+
//# sourceMappingURL=FileItem.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileItem.svelte.d.ts","sourceRoot":"","sources":["../../src/components/FileItem.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAa9C,KAAK,gBAAgB,GAAI;IACtB,IAAI,EAAE,UAAU,CAAA;IAChB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAC;AA+DJ,QAAA,MAAM,QAAQ,sDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
|