@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.
Files changed (222) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +60 -0
  3. package/dist/UpupUploader.svelte +96 -0
  4. package/dist/UpupUploader.svelte.d.ts +5 -0
  5. package/dist/UpupUploader.svelte.d.ts.map +1 -0
  6. package/dist/assets/logos.d.ts +5 -0
  7. package/dist/assets/logos.d.ts.map +1 -0
  8. package/dist/assets/logos.js +4 -0
  9. package/dist/components/AudioUploader.svelte +220 -0
  10. package/dist/components/AudioUploader.svelte.d.ts +4 -0
  11. package/dist/components/AudioUploader.svelte.d.ts.map +1 -0
  12. package/dist/components/AudioWaveform.svelte +72 -0
  13. package/dist/components/AudioWaveform.svelte.d.ts +7 -0
  14. package/dist/components/AudioWaveform.svelte.d.ts.map +1 -0
  15. package/dist/components/BoxUploader.svelte +17 -0
  16. package/dist/components/BoxUploader.svelte.d.ts +19 -0
  17. package/dist/components/BoxUploader.svelte.d.ts.map +1 -0
  18. package/dist/components/CameraUploader.svelte +140 -0
  19. package/dist/components/CameraUploader.svelte.d.ts +4 -0
  20. package/dist/components/CameraUploader.svelte.d.ts.map +1 -0
  21. package/dist/components/ClientBoxUploader.svelte +60 -0
  22. package/dist/components/ClientBoxUploader.svelte.d.ts +19 -0
  23. package/dist/components/ClientBoxUploader.svelte.d.ts.map +1 -0
  24. package/dist/components/ClientDropboxUploader.svelte +60 -0
  25. package/dist/components/ClientDropboxUploader.svelte.d.ts +19 -0
  26. package/dist/components/ClientDropboxUploader.svelte.d.ts.map +1 -0
  27. package/dist/components/ClientGoogleDriveUploader.svelte +57 -0
  28. package/dist/components/ClientGoogleDriveUploader.svelte.d.ts +19 -0
  29. package/dist/components/ClientGoogleDriveUploader.svelte.d.ts.map +1 -0
  30. package/dist/components/ClientOneDriveUploader.svelte +60 -0
  31. package/dist/components/ClientOneDriveUploader.svelte.d.ts +19 -0
  32. package/dist/components/ClientOneDriveUploader.svelte.d.ts.map +1 -0
  33. package/dist/components/DefaultAddMoreIcon.svelte +11 -0
  34. package/dist/components/DefaultAddMoreIcon.svelte.d.ts +8 -0
  35. package/dist/components/DefaultAddMoreIcon.svelte.d.ts.map +1 -0
  36. package/dist/components/DefaultLoaderIcon.svelte +5 -0
  37. package/dist/components/DefaultLoaderIcon.svelte.d.ts +19 -0
  38. package/dist/components/DefaultLoaderIcon.svelte.d.ts.map +1 -0
  39. package/dist/components/DropboxUploader.svelte +17 -0
  40. package/dist/components/DropboxUploader.svelte.d.ts +19 -0
  41. package/dist/components/DropboxUploader.svelte.d.ts.map +1 -0
  42. package/dist/components/EmptyIcon.svelte +3 -0
  43. package/dist/components/EmptyIcon.svelte.d.ts +19 -0
  44. package/dist/components/EmptyIcon.svelte.d.ts.map +1 -0
  45. package/dist/components/FileHero.svelte +152 -0
  46. package/dist/components/FileHero.svelte.d.ts +8 -0
  47. package/dist/components/FileHero.svelte.d.ts.map +1 -0
  48. package/dist/components/FileIcon.svelte +23 -0
  49. package/dist/components/FileIcon.svelte.d.ts +8 -0
  50. package/dist/components/FileIcon.svelte.d.ts.map +1 -0
  51. package/dist/components/FileItem.svelte +95 -0
  52. package/dist/components/FileItem.svelte.d.ts +12 -0
  53. package/dist/components/FileItem.svelte.d.ts.map +1 -0
  54. package/dist/components/FileList.svelte +442 -0
  55. package/dist/components/FileList.svelte.d.ts +4 -0
  56. package/dist/components/FileList.svelte.d.ts.map +1 -0
  57. package/dist/components/FilePreview.svelte +218 -0
  58. package/dist/components/FilePreview.svelte.d.ts +17 -0
  59. package/dist/components/FilePreview.svelte.d.ts.map +1 -0
  60. package/dist/components/FilePreviewPortal.svelte +189 -0
  61. package/dist/components/FilePreviewPortal.svelte.d.ts +12 -0
  62. package/dist/components/FilePreviewPortal.svelte.d.ts.map +1 -0
  63. package/dist/components/FilePreviewThumbnail.svelte +87 -0
  64. package/dist/components/FilePreviewThumbnail.svelte.d.ts +17 -0
  65. package/dist/components/FilePreviewThumbnail.svelte.d.ts.map +1 -0
  66. package/dist/components/FileRow.svelte +192 -0
  67. package/dist/components/FileRow.svelte.d.ts +10 -0
  68. package/dist/components/FileRow.svelte.d.ts.map +1 -0
  69. package/dist/components/GoogleDriveUploader.svelte +17 -0
  70. package/dist/components/GoogleDriveUploader.svelte.d.ts +19 -0
  71. package/dist/components/GoogleDriveUploader.svelte.d.ts.map +1 -0
  72. package/dist/components/Icon.svelte +24 -0
  73. package/dist/components/Icon.svelte.d.ts +10 -0
  74. package/dist/components/Icon.svelte.d.ts.map +1 -0
  75. package/dist/components/Icons.d.ts +10 -0
  76. package/dist/components/Icons.d.ts.map +1 -0
  77. package/dist/components/Icons.js +9 -0
  78. package/dist/components/ImageEditorStub.svelte +3 -0
  79. package/dist/components/ImageEditorStub.svelte.d.ts +19 -0
  80. package/dist/components/ImageEditorStub.svelte.d.ts.map +1 -0
  81. package/dist/components/OneDriveUploader.svelte +17 -0
  82. package/dist/components/OneDriveUploader.svelte.d.ts +19 -0
  83. package/dist/components/OneDriveUploader.svelte.d.ts.map +1 -0
  84. package/dist/components/ScreenCaptureUploader.svelte +254 -0
  85. package/dist/components/ScreenCaptureUploader.svelte.d.ts +4 -0
  86. package/dist/components/ScreenCaptureUploader.svelte.d.ts.map +1 -0
  87. package/dist/components/ServerModeDriveUploader.svelte +250 -0
  88. package/dist/components/ServerModeDriveUploader.svelte.d.ts +10 -0
  89. package/dist/components/ServerModeDriveUploader.svelte.d.ts.map +1 -0
  90. package/dist/components/SourceSelector.svelte +292 -0
  91. package/dist/components/SourceSelector.svelte.d.ts +19 -0
  92. package/dist/components/SourceSelector.svelte.d.ts.map +1 -0
  93. package/dist/components/SourceView.svelte +100 -0
  94. package/dist/components/SourceView.svelte.d.ts +4 -0
  95. package/dist/components/SourceView.svelte.d.ts.map +1 -0
  96. package/dist/components/TrashIcon.svelte +11 -0
  97. package/dist/components/TrashIcon.svelte.d.ts +8 -0
  98. package/dist/components/TrashIcon.svelte.d.ts.map +1 -0
  99. package/dist/components/UploaderPanel.svelte +363 -0
  100. package/dist/components/UploaderPanel.svelte.d.ts +4 -0
  101. package/dist/components/UploaderPanel.svelte.d.ts.map +1 -0
  102. package/dist/components/UrlUploader.svelte +71 -0
  103. package/dist/components/UrlUploader.svelte.d.ts +4 -0
  104. package/dist/components/UrlUploader.svelte.d.ts.map +1 -0
  105. package/dist/components/icons/AudioIcon.svelte +5 -0
  106. package/dist/components/icons/AudioIcon.svelte.d.ts +7 -0
  107. package/dist/components/icons/AudioIcon.svelte.d.ts.map +1 -0
  108. package/dist/components/icons/BoxIcon.svelte +5 -0
  109. package/dist/components/icons/BoxIcon.svelte.d.ts +7 -0
  110. package/dist/components/icons/BoxIcon.svelte.d.ts.map +1 -0
  111. package/dist/components/icons/CameraIcon.svelte +5 -0
  112. package/dist/components/icons/CameraIcon.svelte.d.ts +7 -0
  113. package/dist/components/icons/CameraIcon.svelte.d.ts.map +1 -0
  114. package/dist/components/icons/DropboxIcon.svelte +5 -0
  115. package/dist/components/icons/DropboxIcon.svelte.d.ts +7 -0
  116. package/dist/components/icons/DropboxIcon.svelte.d.ts.map +1 -0
  117. package/dist/components/icons/GoogleDriveIcon.svelte +5 -0
  118. package/dist/components/icons/GoogleDriveIcon.svelte.d.ts +7 -0
  119. package/dist/components/icons/GoogleDriveIcon.svelte.d.ts.map +1 -0
  120. package/dist/components/icons/LinkIcon.svelte +5 -0
  121. package/dist/components/icons/LinkIcon.svelte.d.ts +7 -0
  122. package/dist/components/icons/LinkIcon.svelte.d.ts.map +1 -0
  123. package/dist/components/icons/MyDeviceIcon.svelte +5 -0
  124. package/dist/components/icons/MyDeviceIcon.svelte.d.ts +7 -0
  125. package/dist/components/icons/MyDeviceIcon.svelte.d.ts.map +1 -0
  126. package/dist/components/icons/OneDriveIcon.svelte +5 -0
  127. package/dist/components/icons/OneDriveIcon.svelte.d.ts +7 -0
  128. package/dist/components/icons/OneDriveIcon.svelte.d.ts.map +1 -0
  129. package/dist/components/icons/ScreenCaptureIcon.svelte +5 -0
  130. package/dist/components/icons/ScreenCaptureIcon.svelte.d.ts +7 -0
  131. package/dist/components/icons/ScreenCaptureIcon.svelte.d.ts.map +1 -0
  132. package/dist/components/shared/DriveAuthFallback.svelte +60 -0
  133. package/dist/components/shared/DriveAuthFallback.svelte.d.ts +12 -0
  134. package/dist/components/shared/DriveAuthFallback.svelte.d.ts.map +1 -0
  135. package/dist/components/shared/DriveBrowser.svelte +209 -0
  136. package/dist/components/shared/DriveBrowser.svelte.d.ts +25 -0
  137. package/dist/components/shared/DriveBrowser.svelte.d.ts.map +1 -0
  138. package/dist/components/shared/DriveBrowserHeader.svelte +191 -0
  139. package/dist/components/shared/DriveBrowserHeader.svelte.d.ts +14 -0
  140. package/dist/components/shared/DriveBrowserHeader.svelte.d.ts.map +1 -0
  141. package/dist/components/shared/DriveBrowserIcon.svelte +39 -0
  142. package/dist/components/shared/DriveBrowserIcon.svelte.d.ts +8 -0
  143. package/dist/components/shared/DriveBrowserIcon.svelte.d.ts.map +1 -0
  144. package/dist/components/shared/DriveBrowserItem.svelte +63 -0
  145. package/dist/components/shared/DriveBrowserItem.svelte.d.ts +10 -0
  146. package/dist/components/shared/DriveBrowserItem.svelte.d.ts.map +1 -0
  147. package/dist/components/shared/FileSuccessCheck.svelte +47 -0
  148. package/dist/components/shared/FileSuccessCheck.svelte.d.ts +10 -0
  149. package/dist/components/shared/FileSuccessCheck.svelte.d.ts.map +1 -0
  150. package/dist/components/shared/ProgressBar.svelte +81 -0
  151. package/dist/components/shared/ProgressBar.svelte.d.ts +10 -0
  152. package/dist/components/shared/ProgressBar.svelte.d.ts.map +1 -0
  153. package/dist/components/shared/SourceViewContainer.svelte +27 -0
  154. package/dist/components/shared/SourceViewContainer.svelte.d.ts +10 -0
  155. package/dist/components/shared/SourceViewContainer.svelte.d.ts.map +1 -0
  156. package/dist/components/shared/UploaderHeader.svelte +156 -0
  157. package/dist/components/shared/UploaderHeader.svelte.d.ts +13 -0
  158. package/dist/components/shared/UploaderHeader.svelte.d.ts.map +1 -0
  159. package/dist/composables/use-tiles-per-row.d.ts +19 -0
  160. package/dist/composables/use-tiles-per-row.d.ts.map +1 -0
  161. package/dist/composables/use-tiles-per-row.js +30 -0
  162. package/dist/composables/useBox.d.ts +28 -0
  163. package/dist/composables/useBox.d.ts.map +1 -0
  164. package/dist/composables/useBox.js +61 -0
  165. package/dist/composables/useCameraUploader.d.ts +23 -0
  166. package/dist/composables/useCameraUploader.d.ts.map +1 -0
  167. package/dist/composables/useCameraUploader.js +114 -0
  168. package/dist/composables/useDropbox.d.ts +28 -0
  169. package/dist/composables/useDropbox.d.ts.map +1 -0
  170. package/dist/composables/useDropbox.js +61 -0
  171. package/dist/composables/useFetchFileByUrl.d.ts +9 -0
  172. package/dist/composables/useFetchFileByUrl.d.ts.map +1 -0
  173. package/dist/composables/useFetchFileByUrl.js +33 -0
  174. package/dist/composables/useGoogleDrive.d.ts +28 -0
  175. package/dist/composables/useGoogleDrive.d.ts.map +1 -0
  176. package/dist/composables/useGoogleDrive.js +65 -0
  177. package/dist/composables/useOneDrive.d.ts +29 -0
  178. package/dist/composables/useOneDrive.d.ts.map +1 -0
  179. package/dist/composables/useOneDrive.js +64 -0
  180. package/dist/composables/useSSEProcessing.d.ts +20 -0
  181. package/dist/composables/useSSEProcessing.d.ts.map +1 -0
  182. package/dist/composables/useSSEProcessing.js +17 -0
  183. package/dist/composables/useServerModeDrive.d.ts +17 -0
  184. package/dist/composables/useServerModeDrive.d.ts.map +1 -0
  185. package/dist/composables/useServerModeDrive.js +33 -0
  186. package/dist/composables/useSourceSelector.d.ts +13 -0
  187. package/dist/composables/useSourceSelector.d.ts.map +1 -0
  188. package/dist/composables/useSourceSelector.js +36 -0
  189. package/dist/composables/useUploaderPanel.d.ts +12 -0
  190. package/dist/composables/useUploaderPanel.d.ts.map +1 -0
  191. package/dist/composables/useUploaderPanel.js +43 -0
  192. package/dist/context/create-uploader-context.d.ts +4 -0
  193. package/dist/context/create-uploader-context.d.ts.map +1 -0
  194. package/dist/context/create-uploader-context.js +324 -0
  195. package/dist/context/source-view-header-extra.d.ts +14 -0
  196. package/dist/context/source-view-header-extra.d.ts.map +1 -0
  197. package/dist/context/source-view-header-extra.js +41 -0
  198. package/dist/context/uploader-context.d.ts +109 -0
  199. package/dist/context/uploader-context.d.ts.map +1 -0
  200. package/dist/context/uploader-context.js +96 -0
  201. package/dist/index.d.ts +10 -0
  202. package/dist/index.d.ts.map +1 -0
  203. package/dist/index.js +5 -0
  204. package/dist/lib/constants.d.ts +13 -0
  205. package/dist/lib/constants.d.ts.map +1 -0
  206. package/dist/lib/constants.js +67 -0
  207. package/dist/lib/to-readable.d.ts +14 -0
  208. package/dist/lib/to-readable.d.ts.map +1 -0
  209. package/dist/lib/to-readable.js +15 -0
  210. package/dist/lib/view-mode.d.ts +24 -0
  211. package/dist/lib/view-mode.d.ts.map +1 -0
  212. package/dist/lib/view-mode.js +31 -0
  213. package/dist/shared/types.d.ts +15 -0
  214. package/dist/shared/types.d.ts.map +1 -0
  215. package/dist/shared/types.js +1 -0
  216. package/dist/styles.d.ts +4 -0
  217. package/dist/tailwind-prefixed.css +2479 -0
  218. package/dist/tailwind.css +74 -0
  219. package/dist/use-upup-upload.d.ts +38 -0
  220. package/dist/use-upup-upload.d.ts.map +1 -0
  221. package/dist/use-upup-upload.js +81 -0
  222. package/package.json +101 -0
@@ -0,0 +1,114 @@
1
+ import { derived, get, writable, } from 'svelte/store';
2
+ import { onDestroy } from 'svelte';
3
+ import { useUploaderFiles, useUploaderI18n, useUploaderOptions, useUploaderRuntime, useUploaderSource, useUploaderTheme, } from '../context/uploader-context';
4
+ export var FacingMode;
5
+ (function (FacingMode) {
6
+ FacingMode["Environment"] = "environment";
7
+ FacingMode["User"] = "user";
8
+ })(FacingMode || (FacingMode = {}));
9
+ export default function useCameraUploader() {
10
+ const { core } = useUploaderRuntime();
11
+ const { setFiles } = useUploaderFiles();
12
+ const { setActiveSource } = useUploaderSource();
13
+ const { translations } = useUploaderI18n();
14
+ const props = useUploaderOptions();
15
+ const theme = useUploaderTheme();
16
+ // Mutable bindings — set by the component via bind:this
17
+ let videoEl = null;
18
+ const capturedUrl = writable('');
19
+ const facingMode = writable(FacingMode.Environment);
20
+ const stream = writable(null);
21
+ const newCameraSide = derived(facingMode, $fm => $fm === FacingMode.Environment ? 'front' : 'back');
22
+ function setVideoEl(el) {
23
+ videoEl = el;
24
+ }
25
+ async function startCamera() {
26
+ try {
27
+ const currentStream = get(stream);
28
+ if (currentStream) {
29
+ currentStream.getTracks().forEach(t => {
30
+ t.stop();
31
+ });
32
+ }
33
+ const currentFacing = get(facingMode);
34
+ const mediaStream = await navigator.mediaDevices.getUserMedia({
35
+ video: { facingMode: currentFacing },
36
+ });
37
+ stream.set(mediaStream);
38
+ if (videoEl) {
39
+ videoEl.srcObject = mediaStream;
40
+ await videoEl.play();
41
+ }
42
+ }
43
+ catch {
44
+ // upup-catch: getUserMedia/play() unavailable (denied permission or
45
+ // blocked autoplay) — leave stream null; the UI shows no preview.
46
+ }
47
+ }
48
+ function stopCamera() {
49
+ stream.update(s => {
50
+ if (s)
51
+ s.getTracks().forEach(t => {
52
+ t.stop();
53
+ });
54
+ return null;
55
+ });
56
+ if (videoEl) {
57
+ videoEl.srcObject = null;
58
+ }
59
+ }
60
+ function capture() {
61
+ if (!videoEl)
62
+ return;
63
+ const canvas = document.createElement('canvas');
64
+ canvas.width = videoEl.videoWidth;
65
+ canvas.height = videoEl.videoHeight;
66
+ const ctx = canvas.getContext('2d');
67
+ if (!ctx)
68
+ return;
69
+ ctx.drawImage(videoEl, 0, 0);
70
+ const dataUrl = canvas.toDataURL('image/jpeg');
71
+ capturedUrl.set(dataUrl);
72
+ core?.emit('camera-capture', { dataUrl });
73
+ }
74
+ function clearUrl() {
75
+ capturedUrl.set('');
76
+ }
77
+ async function handleFetchImage() {
78
+ const currentUrl = get(capturedUrl);
79
+ if (!currentUrl)
80
+ return;
81
+ const response = await fetch(currentUrl);
82
+ const blob = await response.blob();
83
+ const file = new File([blob], `capture-${Date.now()}.jpg`, {
84
+ type: 'image/jpeg',
85
+ });
86
+ setFiles([file]);
87
+ capturedUrl.set('');
88
+ setActiveSource(undefined);
89
+ core?.emit('camera-confirm', { file });
90
+ }
91
+ function handleCameraSwitch() {
92
+ facingMode.update(fm => fm === FacingMode.Environment
93
+ ? FacingMode.User
94
+ : FacingMode.Environment);
95
+ }
96
+ onDestroy(() => {
97
+ stopCamera();
98
+ });
99
+ return {
100
+ setVideoEl,
101
+ capturedUrl,
102
+ facingMode,
103
+ newCameraSide,
104
+ startCamera,
105
+ stopCamera,
106
+ capture,
107
+ clearUrl,
108
+ handleFetchImage,
109
+ handleCameraSwitch,
110
+ translations,
111
+ props,
112
+ theme,
113
+ };
114
+ }
@@ -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 UseDropboxReturn {
5
+ user: Readable<DriveBrowserState['user']>;
6
+ dropboxFiles: 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 useDropbox(): UseDropboxReturn;
27
+ export default useDropbox;
28
+ //# sourceMappingURL=useDropbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDropbox.d.ts","sourceRoot":"","sources":["../../src/composables/useDropbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAEH,KAAK,SAAS,EACd,KAAK,WAAW,EACnB,MAAM,eAAe,CAAA;AACtB,OAAO,EAEH,KAAK,iBAAiB,EACzB,MAAM,wBAAwB,CAAA;AAQ/B,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;IACzC,YAAY,EAAE,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAA;IACnD,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,UAAU,IAAI,gBAAgB,CA8D7C;AAED,eAAe,UAAU,CAAA"}
@@ -0,0 +1,61 @@
1
+ import { onMount, onDestroy } from 'svelte';
2
+ import { derived } from 'svelte/store';
3
+ import { DROPBOX_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 useDropbox() {
8
+ const { core } = useUploaderRuntime();
9
+ const { setActiveSource } = useUploaderSource();
10
+ const { setFiles } = useUploaderFiles();
11
+ if (!core)
12
+ throw new Error('useDropbox must be used inside an initialized <UpupUploader />');
13
+ const controller = new DriveBrowserController(core, DROPBOX_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
+ dropboxFiles: 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 useDropbox;
@@ -0,0 +1,9 @@
1
+ import { type Writable } from 'svelte/store';
2
+ import { deriveFetchedFileName } from '@useupup/core/internal';
3
+ export { deriveFetchedFileName };
4
+ export interface UseFetchFileByUrlReturn {
5
+ loading: Writable<boolean>;
6
+ fetchImage: (url: string) => Promise<File | undefined>;
7
+ }
8
+ export default function useFetchFileByUrl(): UseFetchFileByUrlReturn;
9
+ //# sourceMappingURL=useFetchFileByUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchFileByUrl.d.ts","sourceRoot":"","sources":["../../src/composables/useFetchFileByUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAM9D,OAAO,EAAE,qBAAqB,EAAE,CAAA;AAEhC,MAAM,WAAW,uBAAuB;IACpC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC1B,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;CACzD;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,IAAI,uBAAuB,CA8BnE"}
@@ -0,0 +1,33 @@
1
+ import { writable, get } from 'svelte/store';
2
+ import { deriveFetchedFileName } from '@useupup/core/internal';
3
+ import { useUploaderOptions, useUploaderRuntime, } from '../context/uploader-context';
4
+ export { deriveFetchedFileName };
5
+ export default function useFetchFileByUrl() {
6
+ const { core } = useUploaderRuntime();
7
+ const { onError } = useUploaderOptions();
8
+ const loading = writable(false);
9
+ async function fetchImage(url) {
10
+ if (get(loading))
11
+ return;
12
+ try {
13
+ loading.set(true);
14
+ const response = await fetch(url);
15
+ if (!response.ok) {
16
+ throw new Error(`Failed to fetch URL: ${response.status}`);
17
+ }
18
+ const blob = await response.blob();
19
+ const fileName = deriveFetchedFileName(url, response, blob);
20
+ const file = new File([blob], fileName, { type: blob.type });
21
+ core?.emit('url-fetch', { file });
22
+ return file;
23
+ }
24
+ catch (error) {
25
+ onError(error.message);
26
+ return undefined;
27
+ }
28
+ finally {
29
+ loading.set(false);
30
+ }
31
+ }
32
+ return { loading, fetchImage };
33
+ }
@@ -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 UseGoogleDriveReturn {
5
+ user: Readable<DriveBrowserState['user']>;
6
+ googleFiles: Readable<DriveBrowserState['folder']>;
7
+ token: Readable<DriveBrowserState['token']>;
8
+ authCancelled: Readable<DriveBrowserState['authCancelled']>;
9
+ isAuthReady: Readable<DriveBrowserState['isAuthReady']>;
10
+ retryAuth: () => void;
11
+ handleSignOut: () => Promise<void>;
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 useGoogleDrive(): UseGoogleDriveReturn;
27
+ export default useGoogleDrive;
28
+ //# sourceMappingURL=useGoogleDrive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGoogleDrive.d.ts","sourceRoot":"","sources":["../../src/composables/useGoogleDrive.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAEH,KAAK,SAAS,EACd,KAAK,WAAW,EACnB,MAAM,eAAe,CAAA;AACtB,OAAO,EAEH,KAAK,iBAAiB,EACzB,MAAM,wBAAwB,CAAA;AAQ/B,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;IACzC,WAAW,EAAE,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAA;IAClD,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3C,aAAa,EAAE,QAAQ,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAA;IAC3D,WAAW,EAAE,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAA;IACvD,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,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,cAAc,IAAI,oBAAoB,CAoErD;AAED,eAAe,cAAc,CAAA"}
@@ -0,0 +1,65 @@
1
+ import { onMount, onDestroy } from 'svelte';
2
+ import { derived } from 'svelte/store';
3
+ import { GOOGLE_DRIVE_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 useGoogleDrive() {
8
+ const { core } = useUploaderRuntime();
9
+ const { setActiveSource } = useUploaderSource();
10
+ const { setFiles } = useUploaderFiles();
11
+ // core is always non-null inside <UpupUploader /> — the injection throws otherwise.
12
+ if (!core)
13
+ throw new Error('useGoogleDrive must be used inside an initialized <UpupUploader />');
14
+ const controller = new DriveBrowserController(core, GOOGLE_DRIVE_DESCRIPTOR, {
15
+ onFilesSelected: files => {
16
+ setFiles(files);
17
+ },
18
+ onClose: () => {
19
+ setActiveSource(undefined);
20
+ },
21
+ });
22
+ const state = toReadable(controller);
23
+ onMount(() => {
24
+ controller.init();
25
+ });
26
+ onDestroy(() => {
27
+ controller.destroy();
28
+ });
29
+ return {
30
+ user: derived(state, $s => $s.user),
31
+ googleFiles: derived(state, $s => $s.folder),
32
+ token: derived(state, $s => $s.token),
33
+ authCancelled: derived(state, $s => $s.authCancelled),
34
+ isAuthReady: derived(state, $s => $s.isAuthReady),
35
+ retryAuth: () => {
36
+ controller.retryAuth();
37
+ },
38
+ // signOut is synchronous; the shared DriveBrowser prop contract is
39
+ // `() => Promise<void>`, so resolve explicitly rather than mark async.
40
+ handleSignOut: () => {
41
+ controller.signOut();
42
+ return Promise.resolve();
43
+ },
44
+ path: derived(state, $s => $s.path),
45
+ setPath: (newPath) => {
46
+ controller.setPath(newPath);
47
+ },
48
+ handleClick: (file) => {
49
+ controller.handleClick(file);
50
+ },
51
+ selectedFiles: derived(state, $s => $s.selectedFiles),
52
+ showLoader: derived(state, $s => $s.showLoader),
53
+ handleSubmit: () => controller.handleSubmit(),
54
+ handleCancelDownload: () => {
55
+ controller.handleCancelDownload();
56
+ },
57
+ onSelectCurrentFolder: () => controller.onSelectCurrentFolder(),
58
+ isClickLoading: derived(state, $s => $s.isClickLoading),
59
+ error: derived(state, $s => $s.error),
60
+ hasMore: derived(state, $s => $s.hasMore),
61
+ isLoadingMore: derived(state, $s => $s.isLoadingMore),
62
+ loadMore: () => controller.loadMore(),
63
+ };
64
+ }
65
+ export default useGoogleDrive;
@@ -0,0 +1,29 @@
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 UseOneDriveReturn {
5
+ user: Readable<DriveBrowserState['user']>;
6
+ oneDriveFiles: Readable<DriveBrowserState['folder']>;
7
+ signOut: () => void;
8
+ signIn: () => void;
9
+ authenticate: () => void;
10
+ token: Readable<'active' | undefined>;
11
+ isAuthenticated: Readable<DriveBrowserState['isAuthenticated']>;
12
+ isLoading: Readable<DriveBrowserState['isLoading']>;
13
+ path: Readable<DriveBrowserState['path']>;
14
+ setPath: (newPath: DriveFolder[]) => void;
15
+ handleClick: (file: DriveFile) => void;
16
+ selectedFiles: Readable<DriveBrowserState['selectedFiles']>;
17
+ showLoader: Readable<DriveBrowserState['showLoader']>;
18
+ handleSubmit: () => Promise<void>;
19
+ handleCancelDownload: () => void;
20
+ onSelectCurrentFolder: () => Promise<void>;
21
+ isClickLoading: Readable<DriveBrowserState['isClickLoading']>;
22
+ error: Readable<DriveBrowserState['error']>;
23
+ hasMore: Readable<DriveBrowserState['hasMore']>;
24
+ isLoadingMore: Readable<DriveBrowserState['isLoadingMore']>;
25
+ loadMore: () => Promise<void>;
26
+ }
27
+ export declare function useOneDrive(): UseOneDriveReturn;
28
+ export default useOneDrive;
29
+ //# sourceMappingURL=useOneDrive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOneDrive.d.ts","sourceRoot":"","sources":["../../src/composables/useOneDrive.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAEH,KAAK,SAAS,EACd,KAAK,WAAW,EACnB,MAAM,eAAe,CAAA;AACtB,OAAO,EAEH,KAAK,iBAAiB,EACzB,MAAM,wBAAwB,CAAA;AAQ/B,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;IACzC,aAAa,EAAE,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAA;IACpD,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,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,WAAW,IAAI,iBAAiB,CAiE/C;AAED,eAAe,WAAW,CAAA"}
@@ -0,0 +1,64 @@
1
+ import { onMount, onDestroy } from 'svelte';
2
+ import { derived } from 'svelte/store';
3
+ import { ONE_DRIVE_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 useOneDrive() {
8
+ const { core } = useUploaderRuntime();
9
+ const { setActiveSource } = useUploaderSource();
10
+ const { setFiles } = useUploaderFiles();
11
+ if (!core)
12
+ throw new Error('useOneDrive must be used inside an initialized <UpupUploader />');
13
+ const controller = new DriveBrowserController(core, ONE_DRIVE_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
+ oneDriveFiles: derived(state, $s => $s.folder),
31
+ signOut: () => {
32
+ controller.signOut();
33
+ },
34
+ signIn: () => {
35
+ controller.signIn();
36
+ },
37
+ authenticate: () => {
38
+ controller.signIn();
39
+ },
40
+ token: derived(state, $s => $s.isAuthenticated ? 'active' : undefined),
41
+ isAuthenticated: derived(state, $s => $s.isAuthenticated),
42
+ isLoading: derived(state, $s => $s.isLoading),
43
+ path: derived(state, $s => $s.path),
44
+ setPath: (newPath) => {
45
+ controller.setPath(newPath);
46
+ },
47
+ handleClick: (file) => {
48
+ controller.handleClick(file);
49
+ },
50
+ selectedFiles: derived(state, $s => $s.selectedFiles),
51
+ showLoader: derived(state, $s => $s.showLoader),
52
+ handleSubmit: () => controller.handleSubmit(),
53
+ handleCancelDownload: () => {
54
+ controller.handleCancelDownload();
55
+ },
56
+ onSelectCurrentFolder: () => controller.onSelectCurrentFolder(),
57
+ isClickLoading: derived(state, $s => $s.isClickLoading),
58
+ error: derived(state, $s => $s.error),
59
+ hasMore: derived(state, $s => $s.hasMore),
60
+ isLoadingMore: derived(state, $s => $s.isLoadingMore),
61
+ loadMore: () => controller.loadMore(),
62
+ };
63
+ }
64
+ export default useOneDrive;
@@ -0,0 +1,20 @@
1
+ import type { UploadFile } from '@useupup/core';
2
+ type Options = {
3
+ processingEndpoint?: string | undefined;
4
+ onFileProcessed?: ((file: UploadFile, data: Record<string, unknown>) => void) | undefined;
5
+ onError?: ((error: Error) => void) | undefined;
6
+ processingTimeout?: number | undefined;
7
+ };
8
+ /**
9
+ * Manages server-sent event connections opened after each file upload.
10
+ * When `processingEndpoint` is set, calling `connectSSE(file)` opens an
11
+ * EventSource at `${processingEndpoint}?key=${file.key}`. The first message
12
+ * received is parsed as JSON and forwarded to `onFileProcessed`. The
13
+ * connection is closed automatically on message, error, or timeout.
14
+ */
15
+ export interface UseSSEProcessingReturn {
16
+ connectSSE: (file: UploadFile) => void;
17
+ }
18
+ export declare function useSSEProcessing({ processingEndpoint, onFileProcessed, onError, processingTimeout, }: Options): UseSSEProcessingReturn;
19
+ export {};
20
+ //# sourceMappingURL=useSSEProcessing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSSEProcessing.d.ts","sourceRoot":"","sources":["../../src/composables/useSSEProcessing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG/C,KAAK,OAAO,GAAG;IACX,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,eAAe,CAAC,EACZ,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAC3E,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAC9C,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACnC,UAAU,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;CACzC;AAED,wBAAgB,gBAAgB,CAAC,EAC7B,kBAAkB,EAClB,eAAe,EACf,OAAO,EACP,iBAA0B,GAC7B,EAAE,OAAO,GAAG,sBAAsB,CAuBlC"}
@@ -0,0 +1,17 @@
1
+ import { onDestroy } from 'svelte';
2
+ import { SSEProcessor } from '@useupup/core/internal';
3
+ export function useSSEProcessing({ processingEndpoint, onFileProcessed, onError, processingTimeout = 60000, }) {
4
+ const processor = new SSEProcessor();
5
+ onDestroy(() => {
6
+ processor.destroy();
7
+ });
8
+ function connectSSE(file) {
9
+ const key = file.key;
10
+ if (!processingEndpoint || !onFileProcessed || !key)
11
+ return;
12
+ processor.subscribe(key, processingEndpoint, (data) => {
13
+ onFileProcessed(file, data);
14
+ }, (error) => onError?.(error), processingTimeout);
15
+ }
16
+ return { connectSSE };
17
+ }
@@ -0,0 +1,17 @@
1
+ import { type Readable } from 'svelte/store';
2
+ import { ServerModeDriveController } from '@useupup/core/internal';
3
+ import type { ServerModeProvider, ServerDriveFile } from '@useupup/core';
4
+ export type { ServerModeProvider, ServerDriveFile };
5
+ type ServerDriveSnapshot = ReturnType<ServerModeDriveController['getSnapshot']>;
6
+ export interface UseServerModeDriveReturn {
7
+ state: Readable<ServerDriveSnapshot['state']>;
8
+ folderId: Readable<ServerDriveSnapshot['folderId']>;
9
+ setFolderId: (id: string | undefined) => void;
10
+ search: Readable<ServerDriveSnapshot['search']>;
11
+ setSearch: (s: string) => void;
12
+ refresh: ServerModeDriveController['refresh'];
13
+ transfer: ServerModeDriveController['transfer'];
14
+ startAuth: ServerModeDriveController['startAuth'];
15
+ }
16
+ export declare function useServerModeDrive(provider: ServerModeProvider): UseServerModeDriveReturn;
17
+ //# sourceMappingURL=useServerModeDrive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useServerModeDrive.d.ts","sourceRoot":"","sources":["../../src/composables/useServerModeDrive.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAIxE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAA;AAEnD,KAAK,mBAAmB,GAAG,UAAU,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAAA;AAE/E,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7C,QAAQ,EAAE,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAA;IACnD,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IAC7C,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC/C,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,OAAO,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAA;IAC7C,QAAQ,EAAE,yBAAyB,CAAC,UAAU,CAAC,CAAA;IAC/C,SAAS,EAAE,yBAAyB,CAAC,WAAW,CAAC,CAAA;CACpD;AAED,wBAAgB,kBAAkB,CAC9B,QAAQ,EAAE,kBAAkB,GAC7B,wBAAwB,CA6B1B"}
@@ -0,0 +1,33 @@
1
+ import { onMount, onDestroy } from 'svelte';
2
+ import { derived } from 'svelte/store';
3
+ import { ServerModeDriveController } from '@useupup/core/internal';
4
+ import { useUploaderRuntime } from '../context/uploader-context';
5
+ import { toReadable } from '../lib/to-readable';
6
+ export function useServerModeDrive(provider) {
7
+ const { serverUrl } = useUploaderRuntime();
8
+ const controller = new ServerModeDriveController({
9
+ provider,
10
+ serverUrl: () => serverUrl,
11
+ });
12
+ const state = toReadable(controller);
13
+ onMount(() => {
14
+ controller.init();
15
+ });
16
+ onDestroy(() => {
17
+ controller.destroy();
18
+ });
19
+ return {
20
+ state: derived(state, $s => $s.state),
21
+ folderId: derived(state, $s => $s.folderId),
22
+ setFolderId(id) {
23
+ controller.setFolderId(id);
24
+ }, // svelte: NO auto-relist (matches today)
25
+ search: derived(state, $s => $s.search),
26
+ setSearch(s) {
27
+ controller.setSearch(s);
28
+ }, // svelte: NO auto-relist
29
+ refresh: controller.refresh.bind(controller),
30
+ transfer: controller.transfer.bind(controller),
31
+ startAuth: controller.startAuth.bind(controller),
32
+ };
33
+ }
@@ -0,0 +1,13 @@
1
+ import { FileSource } from '@useupup/core';
2
+ import { uploadSourceObject } from '../lib/constants';
3
+ type SourceOption = (typeof uploadSourceObject)[string] & {
4
+ name: string;
5
+ };
6
+ export interface UseSourceSelectorReturn {
7
+ chosenSources: SourceOption[];
8
+ handleSourceClick: (sourceId: FileSource) => void;
9
+ handleInputFileChange: (e: Event) => void;
10
+ }
11
+ export default function useSourceSelector(): UseSourceSelectorReturn;
12
+ export {};
13
+ //# sourceMappingURL=useSourceSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSourceSelector.d.ts","sourceRoot":"","sources":["../../src/composables/useSourceSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAQ1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,KAAK,YAAY,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1E,MAAM,WAAW,uBAAuB;IACpC,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,iBAAiB,EAAE,CAAC,QAAQ,EAAE,UAAU,KAAK,IAAI,CAAA;IACjD,qBAAqB,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;CAC5C;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,IAAI,uBAAuB,CAkCnE"}
@@ -0,0 +1,36 @@
1
+ import { FileSource } from '@useupup/core';
2
+ import { useUploaderFiles, useUploaderI18n, useUploaderOptions, useUploaderRuntime, useUploaderSource, } from '../context/uploader-context';
3
+ import { uploadSourceObject } from '../lib/constants';
4
+ export default function useSourceSelector() {
5
+ const { core, openFilePicker } = useUploaderRuntime();
6
+ const { setActiveSource } = useUploaderSource();
7
+ const { setFiles } = useUploaderFiles();
8
+ const { translations } = useUploaderI18n();
9
+ const { sources, onIntegrationClick } = useUploaderOptions();
10
+ // translations and sources are plain (non-reactive) values in the Svelte context
11
+ // (ContextI18n = BaseContextI18n; ContextProps fields are plain JS values).
12
+ const chosenSources = Object.values(uploadSourceObject)
13
+ .filter(item => sources.includes(item.id))
14
+ .map(item => ({
15
+ ...item,
16
+ name: translations[item.nameKey],
17
+ }));
18
+ function handleSourceClick(sourceId) {
19
+ onIntegrationClick(sourceId);
20
+ core?.emit('source-click', { sourceId });
21
+ if (sourceId === FileSource.LOCAL)
22
+ openFilePicker();
23
+ else
24
+ setActiveSource(sourceId);
25
+ }
26
+ function handleInputFileChange(e) {
27
+ const target = e.target;
28
+ setFiles(Array.from(target.files || []));
29
+ target.value = '';
30
+ }
31
+ return {
32
+ chosenSources,
33
+ handleSourceClick,
34
+ handleInputFileChange,
35
+ };
36
+ }
@@ -0,0 +1,12 @@
1
+ import { type Readable } from 'svelte/store';
2
+ export interface UseUploaderPanelReturn {
3
+ isDragging: Readable<boolean>;
4
+ absoluteIsDragging: Readable<boolean>;
5
+ absoluteHasBorder: Readable<boolean>;
6
+ handleDragOver: (e: DragEvent) => void;
7
+ handleDragLeave: (e: DragEvent) => void;
8
+ handleDrop: (e: DragEvent) => Promise<void>;
9
+ handlePaste: (e: ClipboardEvent) => void;
10
+ }
11
+ export default function useUploaderPanel(): UseUploaderPanelReturn;
12
+ //# sourceMappingURL=useUploaderPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUploaderPanel.d.ts","sourceRoot":"","sources":["../../src/composables/useUploaderPanel.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAUrD,MAAM,WAAW,sBAAsB;IACnC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC7B,kBAAkB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IACrC,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IACpC,cAAc,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAA;IACtC,eAAe,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAA;IACvC,UAAU,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,WAAW,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,IAAI,CAAA;CAC3C;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,IAAI,sBAAsB,CA2CjE"}