@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,47 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '@useupup/core/internal'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Completion checkmark (states-tour.html state E): a sky ring with a tick that
|
|
6
|
+
* DRAWS in and a wrapper that POPS, shown when a file reaches
|
|
7
|
+
* UploadStatus.SUCCESSFUL. Hosts (FilePreview tile, FileRow, FileHero) gate it
|
|
8
|
+
* on status; the fx classes render UNCONDITIONALLY — the shared CSS
|
|
9
|
+
* `data-motion="off"` kill rule is the one gate, so under motion-off the mark
|
|
10
|
+
* simply appears drawn (no draw/pop). aria-hidden: completion is already
|
|
11
|
+
* conveyed textually by the file list's live region + the upload announcement.
|
|
12
|
+
*/
|
|
13
|
+
let {
|
|
14
|
+
index = 0,
|
|
15
|
+
class: className = '',
|
|
16
|
+
size = 22,
|
|
17
|
+
}: {
|
|
18
|
+
/** Position in the sorted list — drives the draw/pop stagger (capped at 8). */
|
|
19
|
+
index?: number
|
|
20
|
+
class?: string
|
|
21
|
+
size?: number
|
|
22
|
+
} = $props()
|
|
23
|
+
|
|
24
|
+
const delay = $derived(`${Math.min(index, 8) * 40}ms`)
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<span
|
|
28
|
+
data-upup-slot="file-success"
|
|
29
|
+
aria-hidden="true"
|
|
30
|
+
class={cn('upup-animate-fx-pop upup-inline-flex', className)}
|
|
31
|
+
style={`animation-delay: ${delay}`}
|
|
32
|
+
>
|
|
33
|
+
<svg viewBox="0 0 24 24" width={size} height={size} fill="none" aria-hidden="true">
|
|
34
|
+
<circle cx="12" cy="12" r="11" stroke="#38bdf8" stroke-width="2" />
|
|
35
|
+
<path
|
|
36
|
+
d="M7 12.5l3.2 3.2L17 8.8"
|
|
37
|
+
stroke="#38bdf8"
|
|
38
|
+
stroke-width="2"
|
|
39
|
+
stroke-linecap="round"
|
|
40
|
+
stroke-linejoin="round"
|
|
41
|
+
pathLength="24"
|
|
42
|
+
stroke-dasharray="24"
|
|
43
|
+
class="upup-animate-fx-draw"
|
|
44
|
+
style={`animation-delay: ${delay}`}
|
|
45
|
+
/>
|
|
46
|
+
</svg>
|
|
47
|
+
</span>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
/** Position in the sorted list — drives the draw/pop stagger (capped at 8). */
|
|
3
|
+
index?: number;
|
|
4
|
+
class?: string;
|
|
5
|
+
size?: number;
|
|
6
|
+
};
|
|
7
|
+
declare const FileSuccessCheck: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
8
|
+
type FileSuccessCheck = ReturnType<typeof FileSuccessCheck>;
|
|
9
|
+
export default FileSuccessCheck;
|
|
10
|
+
//# sourceMappingURL=FileSuccessCheck.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileSuccessCheck.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/shared/FileSuccessCheck.svelte.ts"],"names":[],"mappings":"AAKC,KAAK,gBAAgB,GAAI;IACtB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAC;AA+BJ,QAAA,MAAM,gBAAgB,sDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import {
|
|
3
|
+
useUploaderI18n,
|
|
4
|
+
useUploaderTheme,
|
|
5
|
+
useUploaderUploadControls,
|
|
6
|
+
} from '../../context/uploader-context'
|
|
7
|
+
import { isUploadActive, cn } from '@useupup/core/internal'
|
|
8
|
+
|
|
9
|
+
let {
|
|
10
|
+
progress,
|
|
11
|
+
showValue = false,
|
|
12
|
+
progressBarClassName = '',
|
|
13
|
+
class: className = '',
|
|
14
|
+
}: {
|
|
15
|
+
progress: number
|
|
16
|
+
showValue?: boolean
|
|
17
|
+
progressBarClassName?: string
|
|
18
|
+
class?: string
|
|
19
|
+
} = $props()
|
|
20
|
+
|
|
21
|
+
const { isDark: dark, slotOverrides: slotClasses, slots: themeSlots } = useUploaderTheme()
|
|
22
|
+
const { translations: tr } = useUploaderI18n()
|
|
23
|
+
const { upload: { uploadStatus } } = useUploaderUploadControls()
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
{#if !!progress || isUploadActive($uploadStatus)}
|
|
27
|
+
<div
|
|
28
|
+
data-testid="upup-progress-bar"
|
|
29
|
+
data-upup-slot="progress-bar"
|
|
30
|
+
role="progressbar"
|
|
31
|
+
aria-valuenow={progress}
|
|
32
|
+
aria-valuemin={0}
|
|
33
|
+
aria-valuemax={100}
|
|
34
|
+
aria-label={tr.uploadProgress}
|
|
35
|
+
class={cn(
|
|
36
|
+
'upup-flex upup-items-center upup-gap-2',
|
|
37
|
+
className,
|
|
38
|
+
$slotClasses.progressBarContainer,
|
|
39
|
+
$themeSlots?.progressBar?.root,
|
|
40
|
+
)}
|
|
41
|
+
>
|
|
42
|
+
<div
|
|
43
|
+
class={cn(
|
|
44
|
+
'upup-relative upup-h-[6px] upup-flex-1 upup-overflow-hidden upup-rounded-[4px]',
|
|
45
|
+
$dark ? 'upup-bg-white/[0.12]' : 'upup-bg-[#F5F5F5]',
|
|
46
|
+
progressBarClassName,
|
|
47
|
+
$slotClasses.progressBar,
|
|
48
|
+
$themeSlots?.progressBar?.track,
|
|
49
|
+
)}
|
|
50
|
+
>
|
|
51
|
+
<div
|
|
52
|
+
style={`width: ${progress}%`}
|
|
53
|
+
class={cn(
|
|
54
|
+
'upup-fx-progress-fill upup-fx-essential upup-h-full',
|
|
55
|
+
$dark ? 'upup-bg-[#38bdf8]' : 'upup-bg-[#0ea5e9]',
|
|
56
|
+
$slotClasses.progressBarInner,
|
|
57
|
+
$themeSlots?.progressBar?.fill,
|
|
58
|
+
)}
|
|
59
|
+
></div>
|
|
60
|
+
{#if isUploadActive($uploadStatus)}
|
|
61
|
+
<div
|
|
62
|
+
aria-hidden="true"
|
|
63
|
+
class="upup-animate-fx-sheen upup-pointer-events-none upup-absolute upup-inset-y-0 upup-left-0 upup-w-2/5"
|
|
64
|
+
style="background: linear-gradient(90deg, transparent, rgba(255,255,255,0.45), transparent)"
|
|
65
|
+
></div>
|
|
66
|
+
{/if}
|
|
67
|
+
</div>
|
|
68
|
+
{#if !!showValue}
|
|
69
|
+
<p
|
|
70
|
+
class={cn(
|
|
71
|
+
'upup-text-xs upup-font-semibold',
|
|
72
|
+
{ 'upup-text-white': $dark },
|
|
73
|
+
$slotClasses.progressBarText,
|
|
74
|
+
$themeSlots?.progressBar?.text,
|
|
75
|
+
)}
|
|
76
|
+
>
|
|
77
|
+
{progress}%
|
|
78
|
+
</p>
|
|
79
|
+
{/if}
|
|
80
|
+
</div>
|
|
81
|
+
{/if}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
progress: number;
|
|
3
|
+
showValue?: boolean;
|
|
4
|
+
progressBarClassName?: string;
|
|
5
|
+
class?: string;
|
|
6
|
+
};
|
|
7
|
+
declare const ProgressBar: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
8
|
+
type ProgressBar = ReturnType<typeof ProgressBar>;
|
|
9
|
+
export default ProgressBar;
|
|
10
|
+
//# sourceMappingURL=ProgressBar.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBar.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/shared/ProgressBar.svelte.ts"],"names":[],"mappings":"AAUC,KAAK,gBAAgB,GAAI;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC;AAwDJ,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { useUploaderTheme } from '../../context/uploader-context'
|
|
3
|
+
import { cn } from '@useupup/core/internal'
|
|
4
|
+
import type { Snippet } from 'svelte'
|
|
5
|
+
|
|
6
|
+
const { isLoading = false, children, ...rest }: { isLoading?: boolean; children?: Snippet; [key: string]: unknown } = $props()
|
|
7
|
+
|
|
8
|
+
const { isDark: dark, slotOverrides: slotClasses } = useUploaderTheme()
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<div
|
|
12
|
+
data-testid="upup-source-view"
|
|
13
|
+
class={cn(
|
|
14
|
+
// Transparent by design: the view body sits directly on the panel's
|
|
15
|
+
// gradient chrome (the old black/[0.075] wash read as a mismatched gray
|
|
16
|
+
// block over the light gradient).
|
|
17
|
+
'upup-flex upup-items-center upup-justify-center upup-overflow-hidden',
|
|
18
|
+
{
|
|
19
|
+
'upup-text-[#FAFAFA] dark:upup-text-[#FAFAFA]': isLoading && $dark,
|
|
20
|
+
[$slotClasses.sourceView!]: !isLoading && !!$slotClasses.sourceView,
|
|
21
|
+
[$slotClasses.driveLoading!]: isLoading && !!$slotClasses.driveLoading,
|
|
22
|
+
},
|
|
23
|
+
)}
|
|
24
|
+
{...rest}
|
|
25
|
+
>
|
|
26
|
+
{@render children?.()}
|
|
27
|
+
</div>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
isLoading?: boolean;
|
|
4
|
+
children?: Snippet;
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
};
|
|
7
|
+
declare const SourceViewContainer: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
8
|
+
type SourceViewContainer = ReturnType<typeof SourceViewContainer>;
|
|
9
|
+
export default SourceViewContainer;
|
|
10
|
+
//# sourceMappingURL=SourceViewContainer.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SourceViewContainer.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/shared/SourceViewContainer.svelte.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAErC,KAAK,gBAAgB,GAAI;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AA2B9F,QAAA,MAAM,mBAAmB,sDAAwC,CAAC;AAClE,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAClE,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { derived } from 'svelte/store'
|
|
3
|
+
import { formatUiMessage as t, pluralUiMessage as plural } from '@useupup/core'
|
|
4
|
+
import { isUploadActive, cn } from '@useupup/core/internal'
|
|
5
|
+
import {
|
|
6
|
+
useUploaderFiles,
|
|
7
|
+
useUploaderI18n,
|
|
8
|
+
useUploaderOptions,
|
|
9
|
+
useUploaderTheme,
|
|
10
|
+
useUploaderUploadControls,
|
|
11
|
+
useUploaderView,
|
|
12
|
+
} from '../../context/uploader-context'
|
|
13
|
+
import Icon from '../Icon.svelte'
|
|
14
|
+
|
|
15
|
+
let {
|
|
16
|
+
handleCancel,
|
|
17
|
+
forcedList = false,
|
|
18
|
+
hideAddMore = false,
|
|
19
|
+
}: {
|
|
20
|
+
handleCancel: () => void
|
|
21
|
+
/** True when the panel forces the row list (tiles don't fit one row) —
|
|
22
|
+
* the grid/list toggle is hidden in that state. */
|
|
23
|
+
forcedList?: boolean
|
|
24
|
+
/** True in quiet-completion mode after success — hides the add-more
|
|
25
|
+
* control so the completed panel offers no further CTAs. */
|
|
26
|
+
hideAddMore?: boolean
|
|
27
|
+
} = $props()
|
|
28
|
+
|
|
29
|
+
const { files } = useUploaderFiles()
|
|
30
|
+
const { viewMode, setViewMode, openSourceOverlay } = useUploaderView()
|
|
31
|
+
const { translations: tr } = useUploaderI18n()
|
|
32
|
+
const {
|
|
33
|
+
mini,
|
|
34
|
+
limit,
|
|
35
|
+
isProcessing,
|
|
36
|
+
icons: { ContainerAddMoreIcon },
|
|
37
|
+
} = useUploaderOptions()
|
|
38
|
+
const { isDark: dark, slotOverrides: slotClasses } = useUploaderTheme()
|
|
39
|
+
const { upload: { uploadStatus } } = useUploaderUploadControls()
|
|
40
|
+
|
|
41
|
+
const isUploading = derived(uploadStatus, $s => isUploadActive($s))
|
|
42
|
+
const isLimitReached = derived(files, $f => limit === $f.size)
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
{#if !mini}
|
|
46
|
+
<div
|
|
47
|
+
data-testid="upup-header"
|
|
48
|
+
data-upup-slot="header"
|
|
49
|
+
class={cn(
|
|
50
|
+
'upup-shadow-bottom upup-left-0 upup-right-0 upup-top-0 upup-z-10 upup-grid upup-grid-cols-4 upup-grid-rows-2 upup-items-center upup-justify-between upup-rounded-t-lg upup-bg-black/[0.025] upup-px-3 upup-py-2 md:upup-grid-rows-1',
|
|
51
|
+
{ 'upup-bg-white/5 dark:upup-bg-white/5': $dark },
|
|
52
|
+
$slotClasses.containerHeader,
|
|
53
|
+
)}
|
|
54
|
+
>
|
|
55
|
+
<button
|
|
56
|
+
class={cn(
|
|
57
|
+
'upup-max-md upup-col-start-1 upup-col-end-3 upup-row-start-2 upup-p-1 upup-text-left upup-text-sm upup-text-[#0284c7] md:upup-col-end-2 md:upup-row-start-1',
|
|
58
|
+
{ 'upup-text-[#38bdf8] dark:upup-text-[#38bdf8]': $dark },
|
|
59
|
+
$slotClasses.containerCancelButton,
|
|
60
|
+
)}
|
|
61
|
+
onclick={handleCancel}
|
|
62
|
+
disabled={$isUploading || isProcessing}
|
|
63
|
+
>
|
|
64
|
+
{tr.removeAllFiles}
|
|
65
|
+
</button>
|
|
66
|
+
<span
|
|
67
|
+
class={cn(
|
|
68
|
+
'upup-col-span-4 upup-text-center upup-text-sm upup-text-[#6D6D6D] md:upup-col-span-2',
|
|
69
|
+
{ 'upup-text-gray-300 dark:upup-text-gray-300': $dark },
|
|
70
|
+
)}
|
|
71
|
+
>
|
|
72
|
+
{t(plural(tr, 'filesSelected', $files.size), { count: $files.size })}
|
|
73
|
+
</span>
|
|
74
|
+
<div class="upup-col-start-3 upup-col-end-5 upup-flex upup-items-center upup-justify-end upup-gap-2 md:upup-col-start-4">
|
|
75
|
+
<!-- Two-segment grid|list control. Hidden once the row list is
|
|
76
|
+
forced (tiles don't fit one row of the fixed panel). The
|
|
77
|
+
active segment carries the sky highlight; both segments
|
|
78
|
+
always show their icon so the choice is self-evident. -->
|
|
79
|
+
{#if $files.size > 1 && !forcedList}
|
|
80
|
+
<div
|
|
81
|
+
role="group"
|
|
82
|
+
aria-label={tr.switchToGridView}
|
|
83
|
+
data-upup-slot="view-toggle"
|
|
84
|
+
class={cn(
|
|
85
|
+
'upup-flex upup-items-center upup-gap-0.5 upup-rounded-lg upup-p-0.5',
|
|
86
|
+
$dark ? 'upup-bg-white/[0.06]' : 'upup-bg-black/[0.05]',
|
|
87
|
+
)}
|
|
88
|
+
>
|
|
89
|
+
<button
|
|
90
|
+
data-testid="upup-view-toggle-grid"
|
|
91
|
+
aria-label={tr.switchToGridView}
|
|
92
|
+
aria-pressed={$viewMode === 'grid'}
|
|
93
|
+
title={tr.switchToGridView}
|
|
94
|
+
class={cn(
|
|
95
|
+
'upup-flex upup-h-6 upup-items-center upup-justify-center upup-gap-1 upup-rounded-md upup-px-1.5 upup-transition-colors',
|
|
96
|
+
$viewMode === 'grid'
|
|
97
|
+
? 'upup-bg-[#0ea5e9] upup-text-white'
|
|
98
|
+
: $dark
|
|
99
|
+
? 'upup-text-gray-300 hover:upup-bg-white/10'
|
|
100
|
+
: 'upup-text-gray-500 hover:upup-bg-black/10',
|
|
101
|
+
)}
|
|
102
|
+
onclick={() => setViewMode('grid')}
|
|
103
|
+
>
|
|
104
|
+
<Icon name="layout-grid" size={15} />
|
|
105
|
+
<!-- Label only on the ACTIVE segment, and only at md+
|
|
106
|
+
where the header has room (mini shows no header at
|
|
107
|
+
all). Inactive segment stays icon-only. -->
|
|
108
|
+
{#if $viewMode === 'grid'}
|
|
109
|
+
<span class="upup-hidden upup-text-xs upup-font-medium upup-leading-none md:upup-inline">
|
|
110
|
+
{tr.viewGrid}
|
|
111
|
+
</span>
|
|
112
|
+
{/if}
|
|
113
|
+
</button>
|
|
114
|
+
<button
|
|
115
|
+
data-testid="upup-view-toggle-list"
|
|
116
|
+
aria-label={tr.switchToListView}
|
|
117
|
+
aria-pressed={$viewMode === 'list'}
|
|
118
|
+
title={tr.switchToListView}
|
|
119
|
+
class={cn(
|
|
120
|
+
'upup-flex upup-h-6 upup-items-center upup-justify-center upup-gap-1 upup-rounded-md upup-px-1.5 upup-transition-colors',
|
|
121
|
+
$viewMode === 'list'
|
|
122
|
+
? 'upup-bg-[#0ea5e9] upup-text-white'
|
|
123
|
+
: $dark
|
|
124
|
+
? 'upup-text-gray-300 hover:upup-bg-white/10'
|
|
125
|
+
: 'upup-text-gray-500 hover:upup-bg-black/10',
|
|
126
|
+
)}
|
|
127
|
+
onclick={() => setViewMode('list')}
|
|
128
|
+
>
|
|
129
|
+
<Icon name="layout-list" size={15} />
|
|
130
|
+
{#if $viewMode === 'list'}
|
|
131
|
+
<span class="upup-hidden upup-text-xs upup-font-medium upup-leading-none md:upup-inline">
|
|
132
|
+
{tr.viewList}
|
|
133
|
+
</span>
|
|
134
|
+
{/if}
|
|
135
|
+
</button>
|
|
136
|
+
</div>
|
|
137
|
+
{/if}
|
|
138
|
+
{#if limit > 1 && !$isLimitReached && !hideAddMore}
|
|
139
|
+
<button
|
|
140
|
+
data-testid="upup-add-more"
|
|
141
|
+
data-placement="header"
|
|
142
|
+
data-upup-slot="add-more"
|
|
143
|
+
class={cn(
|
|
144
|
+
'upup-fx-hover-lift upup-fx-press upup-inline-flex upup-shrink-0 upup-items-center upup-gap-1 upup-whitespace-nowrap upup-rounded-md upup-border upup-border-dashed upup-border-[#38bdf8]/50 upup-px-2 upup-py-1 upup-text-sm upup-leading-none upup-text-[#0284c7]',
|
|
145
|
+
{ 'upup-text-[#38bdf8] dark:upup-text-[#38bdf8]': $dark },
|
|
146
|
+
$slotClasses.containerAddMoreButton,
|
|
147
|
+
)}
|
|
148
|
+
onclick={openSourceOverlay}
|
|
149
|
+
disabled={$isUploading || isProcessing}
|
|
150
|
+
>
|
|
151
|
+
<ContainerAddMoreIcon /> {tr.addMore}
|
|
152
|
+
</button>
|
|
153
|
+
{/if}
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
{/if}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type $$ComponentProps = {
|
|
2
|
+
handleCancel: () => void;
|
|
3
|
+
/** True when the panel forces the row list (tiles don't fit one row) —
|
|
4
|
+
* the grid/list toggle is hidden in that state. */
|
|
5
|
+
forcedList?: boolean;
|
|
6
|
+
/** True in quiet-completion mode after success — hides the add-more
|
|
7
|
+
* control so the completed panel offers no further CTAs. */
|
|
8
|
+
hideAddMore?: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare const UploaderHeader: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
11
|
+
type UploaderHeader = ReturnType<typeof UploaderHeader>;
|
|
12
|
+
export default UploaderHeader;
|
|
13
|
+
//# sourceMappingURL=UploaderHeader.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploaderHeader.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/shared/UploaderHeader.svelte.ts"],"names":[],"mappings":"AAgBC,KAAK,gBAAgB,GAAI;IACtB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB;wDACoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;iEAC6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAC;AAwGJ,QAAA,MAAM,cAAc,sDAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Readable } from 'svelte/store';
|
|
2
|
+
export interface UseTilesPerRowReturn {
|
|
3
|
+
/** Reactive tile-per-row count for the currently observed element (0 until
|
|
4
|
+
* measured — see view-mode.ts). */
|
|
5
|
+
tilesPerRow: Readable<number>;
|
|
6
|
+
/** (Re)observe an element with the ResizeObserver. Call it whenever the
|
|
7
|
+
* scroll container the file list binds changes (it mounts after the list
|
|
8
|
+
* first renders); passing null disconnects. */
|
|
9
|
+
observe: (el: HTMLElement | null) => void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Measure an element's content-box width with a ResizeObserver and derive how
|
|
13
|
+
* many 160px grid tiles fit one row (see view-mode.ts). Returns 0 until measured
|
|
14
|
+
* (SSR / jsdom / pre-paint), which isListViewForced reads as "unknown — don't
|
|
15
|
+
* force list yet". Isolated in its own module so tests can mock the measurement
|
|
16
|
+
* seam without a real layout engine. Mirrors React's lib/use-tiles-per-row.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useTilesPerRow(): UseTilesPerRowReturn;
|
|
19
|
+
//# sourceMappingURL=use-tiles-per-row.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-tiles-per-row.d.ts","sourceRoot":"","sources":["../../src/composables/use-tiles-per-row.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAGtD,MAAM,WAAW,oBAAoB;IACjC;wCACoC;IACpC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC7B;;oDAEgD;IAChD,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAA;CAC5C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,oBAAoB,CAqBrD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { onDestroy } from 'svelte';
|
|
2
|
+
import { writable } from 'svelte/store';
|
|
3
|
+
import { computeTilesPerRow } from '../lib/view-mode';
|
|
4
|
+
/**
|
|
5
|
+
* Measure an element's content-box width with a ResizeObserver and derive how
|
|
6
|
+
* many 160px grid tiles fit one row (see view-mode.ts). Returns 0 until measured
|
|
7
|
+
* (SSR / jsdom / pre-paint), which isListViewForced reads as "unknown — don't
|
|
8
|
+
* force list yet". Isolated in its own module so tests can mock the measurement
|
|
9
|
+
* seam without a real layout engine. Mirrors React's lib/use-tiles-per-row.
|
|
10
|
+
*/
|
|
11
|
+
export function useTilesPerRow() {
|
|
12
|
+
const tilesPerRow = writable(0);
|
|
13
|
+
let ro = null;
|
|
14
|
+
function observe(el) {
|
|
15
|
+
ro?.disconnect();
|
|
16
|
+
ro = null;
|
|
17
|
+
if (!el || typeof ResizeObserver === 'undefined')
|
|
18
|
+
return;
|
|
19
|
+
ro = new ResizeObserver(entries => {
|
|
20
|
+
const next = entries[0]?.contentRect.width ?? 0;
|
|
21
|
+
tilesPerRow.set(computeTilesPerRow(next));
|
|
22
|
+
});
|
|
23
|
+
ro.observe(el);
|
|
24
|
+
}
|
|
25
|
+
onDestroy(() => {
|
|
26
|
+
ro?.disconnect();
|
|
27
|
+
ro = null;
|
|
28
|
+
});
|
|
29
|
+
return { tilesPerRow: { subscribe: tilesPerRow.subscribe }, observe };
|
|
30
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type Readable } from 'svelte/store';
|
|
2
|
+
import { type DriveFile, type DriveFolder } from '@useupup/core';
|
|
3
|
+
import { type DriveBrowserState } from '@useupup/core/internal';
|
|
4
|
+
export interface UseBoxReturn {
|
|
5
|
+
user: Readable<DriveBrowserState['user']>;
|
|
6
|
+
boxFiles: Readable<DriveBrowserState['folder']>;
|
|
7
|
+
logout: () => void;
|
|
8
|
+
authenticate: () => void;
|
|
9
|
+
token: Readable<'active' | undefined>;
|
|
10
|
+
isAuthenticated: Readable<DriveBrowserState['isAuthenticated']>;
|
|
11
|
+
isLoading: Readable<DriveBrowserState['isLoading']>;
|
|
12
|
+
path: Readable<DriveBrowserState['path']>;
|
|
13
|
+
setPath: (newPath: DriveFolder[]) => void;
|
|
14
|
+
handleClick: (file: DriveFile) => void;
|
|
15
|
+
selectedFiles: Readable<DriveBrowserState['selectedFiles']>;
|
|
16
|
+
showLoader: Readable<DriveBrowserState['showLoader']>;
|
|
17
|
+
handleSubmit: () => Promise<void>;
|
|
18
|
+
handleCancelDownload: () => void;
|
|
19
|
+
onSelectCurrentFolder: () => Promise<void>;
|
|
20
|
+
isClickLoading: Readable<DriveBrowserState['isClickLoading']>;
|
|
21
|
+
error: Readable<DriveBrowserState['error']>;
|
|
22
|
+
hasMore: Readable<DriveBrowserState['hasMore']>;
|
|
23
|
+
isLoadingMore: Readable<DriveBrowserState['isLoadingMore']>;
|
|
24
|
+
loadMore: () => Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export declare function useBox(): UseBoxReturn;
|
|
27
|
+
export default useBox;
|
|
28
|
+
//# sourceMappingURL=useBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBox.d.ts","sourceRoot":"","sources":["../../src/composables/useBox.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAkB,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EAEH,KAAK,iBAAiB,EACzB,MAAM,wBAAwB,CAAA;AAQ/B,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;IACzC,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC/C,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,KAAK,EAAE,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;IACrC,eAAe,EAAE,QAAQ,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAC/D,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAA;IACnD,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;IACzC,OAAO,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,CAAA;IACzC,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;IACtC,aAAa,EAAE,QAAQ,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAA;IAC3D,UAAU,EAAE,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAA;IACrD,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,oBAAoB,EAAE,MAAM,IAAI,CAAA;IAChC,qBAAqB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,cAAc,EAAE,QAAQ,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAC7D,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3C,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAA;IAC/C,aAAa,EAAE,QAAQ,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAA;IAC3D,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAChC;AAED,wBAAgB,MAAM,IAAI,YAAY,CA8DrC;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { onMount, onDestroy } from 'svelte';
|
|
2
|
+
import { derived } from 'svelte/store';
|
|
3
|
+
import { BOX_DESCRIPTOR } from '@useupup/core';
|
|
4
|
+
import { DriveBrowserController, } from '@useupup/core/internal';
|
|
5
|
+
import { useUploaderFiles, useUploaderRuntime, useUploaderSource, } from '../context/uploader-context';
|
|
6
|
+
import { toReadable } from '../lib/to-readable';
|
|
7
|
+
export function useBox() {
|
|
8
|
+
const { core } = useUploaderRuntime();
|
|
9
|
+
const { setActiveSource } = useUploaderSource();
|
|
10
|
+
const { setFiles } = useUploaderFiles();
|
|
11
|
+
if (!core)
|
|
12
|
+
throw new Error('useBox must be used inside an initialized <UpupUploader />');
|
|
13
|
+
const controller = new DriveBrowserController(core, BOX_DESCRIPTOR, {
|
|
14
|
+
onFilesSelected: files => {
|
|
15
|
+
setFiles(files);
|
|
16
|
+
},
|
|
17
|
+
onClose: () => {
|
|
18
|
+
setActiveSource(undefined);
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
const state = toReadable(controller);
|
|
22
|
+
onMount(() => {
|
|
23
|
+
controller.init();
|
|
24
|
+
});
|
|
25
|
+
onDestroy(() => {
|
|
26
|
+
controller.destroy();
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
user: derived(state, $s => $s.user),
|
|
30
|
+
boxFiles: derived(state, $s => $s.folder),
|
|
31
|
+
logout: () => {
|
|
32
|
+
controller.signOut();
|
|
33
|
+
},
|
|
34
|
+
authenticate: () => {
|
|
35
|
+
controller.signIn();
|
|
36
|
+
},
|
|
37
|
+
token: derived(state, $s => $s.isAuthenticated ? 'active' : undefined),
|
|
38
|
+
isAuthenticated: derived(state, $s => $s.isAuthenticated),
|
|
39
|
+
isLoading: derived(state, $s => $s.isLoading),
|
|
40
|
+
path: derived(state, $s => $s.path),
|
|
41
|
+
setPath: (newPath) => {
|
|
42
|
+
controller.setPath(newPath);
|
|
43
|
+
},
|
|
44
|
+
handleClick: (file) => {
|
|
45
|
+
controller.handleClick(file);
|
|
46
|
+
},
|
|
47
|
+
selectedFiles: derived(state, $s => $s.selectedFiles),
|
|
48
|
+
showLoader: derived(state, $s => $s.showLoader),
|
|
49
|
+
handleSubmit: () => controller.handleSubmit(),
|
|
50
|
+
handleCancelDownload: () => {
|
|
51
|
+
controller.handleCancelDownload();
|
|
52
|
+
},
|
|
53
|
+
onSelectCurrentFolder: () => controller.onSelectCurrentFolder(),
|
|
54
|
+
isClickLoading: derived(state, $s => $s.isClickLoading),
|
|
55
|
+
error: derived(state, $s => $s.error),
|
|
56
|
+
hasMore: derived(state, $s => $s.hasMore),
|
|
57
|
+
isLoadingMore: derived(state, $s => $s.isLoadingMore),
|
|
58
|
+
loadMore: () => controller.loadMore(),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export default useBox;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Readable, type Writable } from 'svelte/store';
|
|
2
|
+
import { useUploaderI18n, useUploaderOptions, useUploaderTheme } from '../context/uploader-context';
|
|
3
|
+
export declare enum FacingMode {
|
|
4
|
+
Environment = "environment",
|
|
5
|
+
User = "user"
|
|
6
|
+
}
|
|
7
|
+
export interface UseCameraUploaderReturn {
|
|
8
|
+
setVideoEl: (el: HTMLVideoElement | null) => void;
|
|
9
|
+
capturedUrl: Writable<string>;
|
|
10
|
+
facingMode: Writable<FacingMode>;
|
|
11
|
+
newCameraSide: Readable<'front' | 'back'>;
|
|
12
|
+
startCamera: () => Promise<void>;
|
|
13
|
+
stopCamera: () => void;
|
|
14
|
+
capture: () => void;
|
|
15
|
+
clearUrl: () => void;
|
|
16
|
+
handleFetchImage: () => Promise<void>;
|
|
17
|
+
handleCameraSwitch: () => void;
|
|
18
|
+
translations: ReturnType<typeof useUploaderI18n>['translations'];
|
|
19
|
+
props: ReturnType<typeof useUploaderOptions>;
|
|
20
|
+
theme: ReturnType<typeof useUploaderTheme>;
|
|
21
|
+
}
|
|
22
|
+
export default function useCameraUploader(): UseCameraUploaderReturn;
|
|
23
|
+
//# sourceMappingURL=useCameraUploader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCameraUploader.d.ts","sourceRoot":"","sources":["../../src/composables/useCameraUploader.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,QAAQ,EACb,KAAK,QAAQ,EAChB,MAAM,cAAc,CAAA;AAErB,OAAO,EAEH,eAAe,EACf,kBAAkB,EAGlB,gBAAgB,EACnB,MAAM,6BAA6B,CAAA;AAEpC,oBAAY,UAAU;IAClB,WAAW,gBAAgB;IAC3B,IAAI,SAAS;CAChB;AAED,MAAM,WAAW,uBAAuB;IACpC,UAAU,EAAE,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAA;IACjD,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;IAChC,aAAa,EAAE,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,CAAA;IACzC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,kBAAkB,EAAE,MAAM,IAAI,CAAA;IAC9B,YAAY,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,cAAc,CAAC,CAAA;IAChE,KAAK,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA;IAC5C,KAAK,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA;CAC7C;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,IAAI,uBAAuB,CAwHnE"}
|