@useupup/react 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 (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +72 -0
  3. package/dist/AudioUploader-2WITC5YR.js +298 -0
  4. package/dist/AudioUploader-2WITC5YR.js.map +1 -0
  5. package/dist/AudioUploader-HWP4U6UJ.cjs +298 -0
  6. package/dist/AudioUploader-HWP4U6UJ.cjs.map +1 -0
  7. package/dist/BoxUploader-NEGZOMR4.cjs +172 -0
  8. package/dist/BoxUploader-NEGZOMR4.cjs.map +1 -0
  9. package/dist/BoxUploader-VE5LRJ7M.js +172 -0
  10. package/dist/BoxUploader-VE5LRJ7M.js.map +1 -0
  11. package/dist/CameraUploader-BJ3AU3VS.cjs +200 -0
  12. package/dist/CameraUploader-BJ3AU3VS.cjs.map +1 -0
  13. package/dist/CameraUploader-WF5A6UIS.js +200 -0
  14. package/dist/CameraUploader-WF5A6UIS.js.map +1 -0
  15. package/dist/DropboxUploader-INTOYHJP.cjs +174 -0
  16. package/dist/DropboxUploader-INTOYHJP.cjs.map +1 -0
  17. package/dist/DropboxUploader-VMUYG3OP.js +174 -0
  18. package/dist/DropboxUploader-VMUYG3OP.js.map +1 -0
  19. package/dist/GoogleDriveUploader-CXZUZI6R.cjs +177 -0
  20. package/dist/GoogleDriveUploader-CXZUZI6R.cjs.map +1 -0
  21. package/dist/GoogleDriveUploader-YA56X3QR.js +177 -0
  22. package/dist/GoogleDriveUploader-YA56X3QR.js.map +1 -0
  23. package/dist/ImageEditorInline-GJ3HCPPZ.cjs +185 -0
  24. package/dist/ImageEditorInline-GJ3HCPPZ.cjs.map +1 -0
  25. package/dist/ImageEditorInline-N2NSAODR.js +185 -0
  26. package/dist/ImageEditorInline-N2NSAODR.js.map +1 -0
  27. package/dist/ImageEditorModal-CWKMDVPY.js +236 -0
  28. package/dist/ImageEditorModal-CWKMDVPY.js.map +1 -0
  29. package/dist/ImageEditorModal-XJKPBTVQ.cjs +236 -0
  30. package/dist/ImageEditorModal-XJKPBTVQ.cjs.map +1 -0
  31. package/dist/OneDriveUploader-4RPTY7KT.cjs +175 -0
  32. package/dist/OneDriveUploader-4RPTY7KT.cjs.map +1 -0
  33. package/dist/OneDriveUploader-I25Y6AJP.js +175 -0
  34. package/dist/OneDriveUploader-I25Y6AJP.js.map +1 -0
  35. package/dist/ScreenCaptureUploader-7K6QPD42.cjs +281 -0
  36. package/dist/ScreenCaptureUploader-7K6QPD42.cjs.map +1 -0
  37. package/dist/ScreenCaptureUploader-WKDO4S75.js +281 -0
  38. package/dist/ScreenCaptureUploader-WKDO4S75.js.map +1 -0
  39. package/dist/chunk-6TFTTLOD.js +852 -0
  40. package/dist/chunk-6TFTTLOD.js.map +1 -0
  41. package/dist/chunk-DZQBTC6T.cjs +39 -0
  42. package/dist/chunk-DZQBTC6T.cjs.map +1 -0
  43. package/dist/chunk-GNMEQB32.cjs +195 -0
  44. package/dist/chunk-GNMEQB32.cjs.map +1 -0
  45. package/dist/chunk-IG62MHVQ.cjs +276 -0
  46. package/dist/chunk-IG62MHVQ.cjs.map +1 -0
  47. package/dist/chunk-L3E5OMY7.cjs +852 -0
  48. package/dist/chunk-L3E5OMY7.cjs.map +1 -0
  49. package/dist/chunk-LCMDDPUD.js +276 -0
  50. package/dist/chunk-LCMDDPUD.js.map +1 -0
  51. package/dist/chunk-N4XGN66E.cjs +79 -0
  52. package/dist/chunk-N4XGN66E.cjs.map +1 -0
  53. package/dist/chunk-N7TWHP5Z.js +195 -0
  54. package/dist/chunk-N7TWHP5Z.js.map +1 -0
  55. package/dist/chunk-OXWVO7Z6.cjs +70 -0
  56. package/dist/chunk-OXWVO7Z6.cjs.map +1 -0
  57. package/dist/chunk-PLGHK2Y4.js +79 -0
  58. package/dist/chunk-PLGHK2Y4.js.map +1 -0
  59. package/dist/chunk-SSLP3MEC.js +39 -0
  60. package/dist/chunk-SSLP3MEC.js.map +1 -0
  61. package/dist/chunk-WYMKISZI.js +70 -0
  62. package/dist/chunk-WYMKISZI.js.map +1 -0
  63. package/dist/index.cjs +4219 -0
  64. package/dist/index.cjs.map +1 -0
  65. package/dist/index.d.cts +240 -0
  66. package/dist/index.d.ts +240 -0
  67. package/dist/index.js +4219 -0
  68. package/dist/index.js.map +1 -0
  69. package/dist/styles.d.ts +4 -0
  70. package/dist/tailwind-prefixed.css +2529 -0
  71. package/package.json +110 -0
@@ -0,0 +1,174 @@
1
+ import {
2
+ DriveAuthFallback,
3
+ DriveBrowser,
4
+ ServerModeDriveUploader
5
+ } from "./chunk-6TFTTLOD.js";
6
+ import "./chunk-PLGHK2Y4.js";
7
+ import "./chunk-SSLP3MEC.js";
8
+ import {
9
+ useUploaderFiles,
10
+ useUploaderRuntime,
11
+ useUploaderSource
12
+ } from "./chunk-LCMDDPUD.js";
13
+
14
+ // src/hooks/useDropbox.ts
15
+ import {
16
+ useCallback,
17
+ useEffect,
18
+ useRef,
19
+ useSyncExternalStore
20
+ } from "react";
21
+ import {
22
+ DROPBOX_DESCRIPTOR
23
+ } from "@useupup/core";
24
+ import {
25
+ DriveBrowserController
26
+ } from "@useupup/core/internal";
27
+ var SERVER_SNAPSHOT = {
28
+ user: void 0,
29
+ folder: void 0,
30
+ path: [],
31
+ selectedFiles: [],
32
+ isClickLoading: false,
33
+ showLoader: false,
34
+ isAuthReady: false,
35
+ isAuthenticated: false,
36
+ isLoading: true,
37
+ authCancelled: false,
38
+ token: void 0,
39
+ error: void 0,
40
+ hasMore: false,
41
+ isLoadingMore: false
42
+ };
43
+ function useDropbox() {
44
+ var _a, _b;
45
+ const { core } = useUploaderRuntime();
46
+ const { setActiveSource } = useUploaderSource();
47
+ const { setFiles } = useUploaderFiles();
48
+ const controllerRef = useRef(null);
49
+ if (!controllerRef.current && core) {
50
+ controllerRef.current = new DriveBrowserController(
51
+ core,
52
+ DROPBOX_DESCRIPTOR,
53
+ {
54
+ onFilesSelected: (files) => {
55
+ setFiles(files);
56
+ },
57
+ onClose: () => {
58
+ setActiveSource(void 0);
59
+ }
60
+ }
61
+ );
62
+ }
63
+ const controller = controllerRef.current;
64
+ useEffect(() => {
65
+ controller == null ? void 0 : controller.init();
66
+ return () => controller == null ? void 0 : controller.destroy();
67
+ }, [controller]);
68
+ const state = useSyncExternalStore(
69
+ (_a = controller == null ? void 0 : controller.subscribe) != null ? _a : (() => () => {
70
+ }),
71
+ (_b = controller == null ? void 0 : controller.getSnapshot) != null ? _b : (() => SERVER_SNAPSHOT),
72
+ () => SERVER_SNAPSHOT
73
+ );
74
+ const setPath = useCallback(
75
+ (value) => controller == null ? void 0 : controller.setPath(
76
+ typeof value === "function" ? value(controller.getSnapshot().path) : value
77
+ ),
78
+ [controller]
79
+ );
80
+ return {
81
+ user: state.user,
82
+ dropboxFiles: state.folder,
83
+ logout: () => controller == null ? void 0 : controller.signOut(),
84
+ authenticate: () => controller == null ? void 0 : controller.signIn(),
85
+ // 'active' is a presence sentinel the component checks via `!token`; the real
86
+ // token lives in state.token and is intentionally not surfaced here.
87
+ token: state.isAuthenticated ? "active" : void 0,
88
+ isAuthenticated: state.isAuthenticated,
89
+ isLoading: state.isLoading,
90
+ path: state.path,
91
+ setPath,
92
+ isClickLoading: state.isClickLoading,
93
+ handleClick: (file) => controller == null ? void 0 : controller.handleClick(file),
94
+ selectedFiles: state.selectedFiles,
95
+ showLoader: state.showLoader,
96
+ handleSubmit: () => {
97
+ var _a2;
98
+ return (_a2 = controller == null ? void 0 : controller.handleSubmit()) != null ? _a2 : Promise.resolve();
99
+ },
100
+ handleCancelDownload: () => {
101
+ controller == null ? void 0 : controller.handleCancelDownload();
102
+ },
103
+ onSelectCurrentFolder: () => {
104
+ var _a2;
105
+ return (_a2 = controller == null ? void 0 : controller.onSelectCurrentFolder()) != null ? _a2 : Promise.resolve();
106
+ },
107
+ error: state.error,
108
+ hasMore: state.hasMore,
109
+ isLoadingMore: state.isLoadingMore,
110
+ loadMore: () => {
111
+ var _a2;
112
+ return (_a2 = controller == null ? void 0 : controller.loadMore()) != null ? _a2 : Promise.resolve();
113
+ }
114
+ };
115
+ }
116
+
117
+ // src/components/DropboxUploader.tsx
118
+ import { jsx } from "react/jsx-runtime";
119
+ function DropboxUploader() {
120
+ const { mode } = useUploaderRuntime();
121
+ const { setActiveSource } = useUploaderSource();
122
+ if (mode === "server") {
123
+ return /* @__PURE__ */ jsx(
124
+ ServerModeDriveUploader,
125
+ {
126
+ provider: "dropbox",
127
+ onBack: () => {
128
+ setActiveSource(void 0);
129
+ }
130
+ }
131
+ );
132
+ }
133
+ return /* @__PURE__ */ jsx(ClientDropboxUploader, {});
134
+ }
135
+ function ClientDropboxUploader() {
136
+ const {
137
+ user,
138
+ dropboxFiles: driveFiles,
139
+ logout,
140
+ token,
141
+ isAuthenticated,
142
+ authenticate,
143
+ isLoading,
144
+ ...uploaderProps
145
+ } = useDropbox();
146
+ const handleSignOut = async () => {
147
+ logout();
148
+ return Promise.resolve();
149
+ };
150
+ if (!isAuthenticated && !token && !isLoading) {
151
+ return /* @__PURE__ */ jsx(
152
+ DriveAuthFallback,
153
+ {
154
+ providerName: "Dropbox",
155
+ onRetry: authenticate,
156
+ "data-upup-slot": "dropbox-uploader"
157
+ }
158
+ );
159
+ }
160
+ return /* @__PURE__ */ jsx(
161
+ DriveBrowser,
162
+ {
163
+ driveFiles,
164
+ user,
165
+ handleSignOut,
166
+ "data-upup-slot": "dropbox-uploader",
167
+ ...uploaderProps
168
+ }
169
+ );
170
+ }
171
+ export {
172
+ DropboxUploader as default
173
+ };
174
+ //# sourceMappingURL=DropboxUploader-VMUYG3OP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useDropbox.ts","../src/components/DropboxUploader.tsx"],"sourcesContent":["import {\r\n useCallback,\r\n useEffect,\r\n useRef,\r\n useSyncExternalStore,\r\n type SetStateAction,\r\n} from 'react'\r\nimport {\r\n DROPBOX_DESCRIPTOR,\r\n type DriveFile,\r\n type DriveFolder,\r\n} from '@useupup/core'\r\nimport {\r\n DriveBrowserController,\r\n type DriveBrowserState,\r\n} from '@useupup/core/internal'\r\nimport {\r\n useUploaderFiles,\r\n useUploaderRuntime,\r\n useUploaderSource,\r\n} from '../context/UploaderContext'\r\n\r\n/** Stable fallback snapshot — mirrors DriveBrowserController constructor defaults. */\r\nconst SERVER_SNAPSHOT: DriveBrowserState = {\r\n user: undefined,\r\n folder: undefined,\r\n path: [],\r\n selectedFiles: [],\r\n isClickLoading: false,\r\n showLoader: false,\r\n isAuthReady: false,\r\n isAuthenticated: false,\r\n isLoading: true,\r\n authCancelled: false,\r\n token: undefined,\r\n error: undefined,\r\n hasMore: false,\r\n isLoadingMore: false,\r\n}\r\n\r\nexport interface UseDropboxResult {\r\n user: DriveBrowserState['user']\r\n dropboxFiles: DriveBrowserState['folder']\r\n logout: () => void\r\n authenticate: () => void\r\n token: string | undefined\r\n isAuthenticated: boolean\r\n isLoading: boolean\r\n path: DriveFolder[]\r\n setPath: (value: SetStateAction<DriveFolder[]>) => void\r\n isClickLoading: boolean\r\n handleClick: (file: DriveFile) => void\r\n selectedFiles: DriveFile[]\r\n showLoader: boolean\r\n handleSubmit: () => Promise<void>\r\n handleCancelDownload: () => void\r\n onSelectCurrentFolder: () => Promise<void>\r\n error: DriveBrowserState['error']\r\n hasMore: boolean\r\n isLoadingMore: boolean\r\n loadMore: () => Promise<void>\r\n}\r\n\r\nexport function useDropbox(): UseDropboxResult {\r\n const { core } = useUploaderRuntime()\r\n const { setActiveSource } = useUploaderSource()\r\n const { setFiles } = useUploaderFiles()\r\n\r\n // One controller per mounted adapter view, created once (guarded ref) — same\r\n // idiom as useUploaderController's rootRef. setFiles/setActiveSource are referentially\r\n // stable (useCallback over root), so capturing them once is safe.\r\n const controllerRef = useRef<DriveBrowserController | null>(null)\r\n if (!controllerRef.current && core) {\r\n controllerRef.current = new DriveBrowserController(\r\n core,\r\n DROPBOX_DESCRIPTOR,\r\n {\r\n onFilesSelected: files => {\r\n setFiles(files)\r\n },\r\n onClose: () => {\r\n setActiveSource(undefined)\r\n },\r\n },\r\n )\r\n }\r\n const controller = controllerRef.current\r\n\r\n useEffect(() => {\r\n controller?.init()\r\n return () => controller?.destroy()\r\n }, [controller])\r\n\r\n const state = useSyncExternalStore(\r\n controller?.subscribe ?? (() => () => {}),\r\n controller?.getSnapshot ?? (() => SERVER_SNAPSHOT),\r\n () => SERVER_SNAPSHOT,\r\n )\r\n\r\n // setPath is passed as a prop to DriveBrowser/DriveBrowserHeader, where the\r\n // breadcrumb truncates the trail by calling it with a functional updater\r\n // (`prev => prev.slice(0, i+1)`). It MUST be referentially stable across renders\r\n // (same reason useUploaderController useCallbacks its setters) and resolves that\r\n // updater against the live snapshot before delegating to the array-only\r\n // controller.setPath.\r\n const setPath = useCallback(\r\n (value: SetStateAction<DriveFolder[]>) =>\r\n controller?.setPath(\r\n typeof value === 'function'\r\n ? value(controller.getSnapshot().path)\r\n : value,\r\n ),\r\n [controller],\r\n )\r\n\r\n return {\r\n user: state.user,\r\n dropboxFiles: state.folder,\r\n logout: () => controller?.signOut(),\r\n authenticate: () => controller?.signIn(),\r\n // 'active' is a presence sentinel the component checks via `!token`; the real\r\n // token lives in state.token and is intentionally not surfaced here.\r\n token: state.isAuthenticated ? 'active' : undefined,\r\n isAuthenticated: state.isAuthenticated,\r\n isLoading: state.isLoading,\r\n path: state.path,\r\n setPath,\r\n isClickLoading: state.isClickLoading,\r\n handleClick: (file: DriveFile) => controller?.handleClick(file),\r\n selectedFiles: state.selectedFiles,\r\n showLoader: state.showLoader,\r\n handleSubmit: () => controller?.handleSubmit() ?? Promise.resolve(),\r\n handleCancelDownload: () => {\r\n controller?.handleCancelDownload()\r\n },\r\n onSelectCurrentFolder: () =>\r\n controller?.onSelectCurrentFolder() ?? Promise.resolve(),\r\n error: state.error,\r\n hasMore: state.hasMore,\r\n isLoadingMore: state.isLoadingMore,\r\n loadMore: () => controller?.loadMore() ?? Promise.resolve(),\r\n }\r\n}\r\n","import React from 'react'\r\nimport {\r\n useUploaderRuntime,\r\n useUploaderSource,\r\n} from '../context/UploaderContext'\r\nimport { useDropbox } from '../hooks/useDropbox'\r\nimport DriveAuthFallback from './shared/DriveAuthFallback'\r\nimport DriveBrowser from './shared/DriveBrowser'\r\nimport ServerModeDriveUploader from './ServerModeDriveUploader'\r\n\r\nexport default function DropboxUploader(): React.ReactElement | null {\r\n const { mode } = useUploaderRuntime()\r\n const { setActiveSource } = useUploaderSource()\r\n if (mode === 'server') {\r\n return (\r\n <ServerModeDriveUploader\r\n provider=\"dropbox\"\r\n onBack={() => {\r\n setActiveSource(undefined)\r\n }}\r\n />\r\n )\r\n }\r\n return <ClientDropboxUploader />\r\n}\r\n\r\nfunction ClientDropboxUploader() {\r\n const {\r\n user,\r\n dropboxFiles: driveFiles,\r\n logout,\r\n token,\r\n isAuthenticated,\r\n authenticate,\r\n isLoading,\r\n ...uploaderProps\r\n } = useDropbox()\r\n\r\n const handleSignOut = async () => {\r\n logout()\r\n return Promise.resolve()\r\n }\r\n\r\n if (!isAuthenticated && !token && !isLoading) {\r\n return (\r\n <DriveAuthFallback\r\n providerName=\"Dropbox\"\r\n onRetry={authenticate}\r\n data-upup-slot=\"dropbox-uploader\"\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <DriveBrowser\r\n driveFiles={driveFiles}\r\n user={user}\r\n handleSignOut={handleSignOut}\r\n data-upup-slot=\"dropbox-uploader\"\r\n {...uploaderProps}\r\n />\r\n )\r\n}\r\n"],"mappings":"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","names":["_a"]}
@@ -0,0 +1,177 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+ var _chunkL3E5OMY7cjs = require('./chunk-L3E5OMY7.cjs');
6
+ require('./chunk-N4XGN66E.cjs');
7
+ require('./chunk-DZQBTC6T.cjs');
8
+
9
+
10
+
11
+
12
+ var _chunkIG62MHVQcjs = require('./chunk-IG62MHVQ.cjs');
13
+
14
+ // src/hooks/useGoogleDrive.ts
15
+
16
+
17
+
18
+
19
+
20
+ var _react = require('react');
21
+
22
+
23
+ var _core = require('@useupup/core');
24
+
25
+
26
+ var _internal = require('@useupup/core/internal');
27
+ var SERVER_SNAPSHOT = {
28
+ user: void 0,
29
+ folder: void 0,
30
+ path: [],
31
+ selectedFiles: [],
32
+ isClickLoading: false,
33
+ showLoader: false,
34
+ isAuthReady: false,
35
+ isAuthenticated: false,
36
+ isLoading: true,
37
+ authCancelled: false,
38
+ token: void 0,
39
+ error: void 0,
40
+ hasMore: false,
41
+ isLoadingMore: false
42
+ };
43
+ function useGoogleDrive() {
44
+ var _a, _b;
45
+ const { core } = _chunkIG62MHVQcjs.useUploaderRuntime.call(void 0, );
46
+ const { setActiveSource } = _chunkIG62MHVQcjs.useUploaderSource.call(void 0, );
47
+ const { setFiles } = _chunkIG62MHVQcjs.useUploaderFiles.call(void 0, );
48
+ const controllerRef = _react.useRef.call(void 0, null);
49
+ if (!controllerRef.current && core) {
50
+ controllerRef.current = new (0, _internal.DriveBrowserController)(
51
+ core,
52
+ _core.GOOGLE_DRIVE_DESCRIPTOR,
53
+ {
54
+ onFilesSelected: (files) => {
55
+ setFiles(files);
56
+ },
57
+ onClose: () => {
58
+ setActiveSource(void 0);
59
+ }
60
+ }
61
+ );
62
+ }
63
+ const controller = controllerRef.current;
64
+ _react.useEffect.call(void 0, () => {
65
+ controller == null ? void 0 : controller.init();
66
+ return () => controller == null ? void 0 : controller.destroy();
67
+ }, [controller]);
68
+ const state = _react.useSyncExternalStore.call(void 0,
69
+ (_a = controller == null ? void 0 : controller.subscribe) != null ? _a : (() => () => {
70
+ }),
71
+ (_b = controller == null ? void 0 : controller.getSnapshot) != null ? _b : (() => SERVER_SNAPSHOT),
72
+ () => SERVER_SNAPSHOT
73
+ );
74
+ const setPath = _react.useCallback.call(void 0,
75
+ (value) => controller == null ? void 0 : controller.setPath(
76
+ typeof value === "function" ? value(controller.getSnapshot().path) : value
77
+ ),
78
+ [controller]
79
+ );
80
+ return {
81
+ user: state.user,
82
+ googleFiles: state.folder,
83
+ handleSignOut: () => {
84
+ controller == null ? void 0 : controller.signOut();
85
+ return Promise.resolve();
86
+ },
87
+ token: state.token,
88
+ authCancelled: state.authCancelled,
89
+ // GoogleDrive has no separate signIn: initial consent AND retry both go
90
+ // through retryAuth (it resets authCancelled, then requests a GIS token).
91
+ retryAuth: () => controller == null ? void 0 : controller.retryAuth(),
92
+ isAuthReady: state.isAuthReady,
93
+ path: state.path,
94
+ setPath,
95
+ handleClick: (file) => controller == null ? void 0 : controller.handleClick(file),
96
+ selectedFiles: state.selectedFiles,
97
+ showLoader: state.showLoader,
98
+ handleSubmit: () => {
99
+ var _a2;
100
+ return (_a2 = controller == null ? void 0 : controller.handleSubmit()) != null ? _a2 : Promise.resolve();
101
+ },
102
+ handleCancelDownload: () => {
103
+ controller == null ? void 0 : controller.handleCancelDownload();
104
+ },
105
+ onSelectCurrentFolder: () => {
106
+ var _a2;
107
+ return (_a2 = controller == null ? void 0 : controller.onSelectCurrentFolder()) != null ? _a2 : Promise.resolve();
108
+ },
109
+ error: state.error,
110
+ hasMore: state.hasMore,
111
+ isLoadingMore: state.isLoadingMore,
112
+ loadMore: () => {
113
+ var _a2;
114
+ return (_a2 = controller == null ? void 0 : controller.loadMore()) != null ? _a2 : Promise.resolve();
115
+ },
116
+ isClickLoading: state.isClickLoading
117
+ };
118
+ }
119
+ var useGoogleDrive_default = useGoogleDrive;
120
+
121
+ // src/components/GoogleDriveUploader.tsx
122
+ var _jsxruntime = require('react/jsx-runtime');
123
+ function GoogleDriveUploader() {
124
+ const { mode } = _chunkIG62MHVQcjs.useUploaderRuntime.call(void 0, );
125
+ const { setActiveSource } = _chunkIG62MHVQcjs.useUploaderSource.call(void 0, );
126
+ if (mode === "server") {
127
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
128
+ _chunkL3E5OMY7cjs.ServerModeDriveUploader,
129
+ {
130
+ provider: "google-drive",
131
+ onBack: () => {
132
+ setActiveSource(void 0);
133
+ }
134
+ }
135
+ );
136
+ }
137
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ClientGoogleDriveUploader, {});
138
+ }
139
+ function ClientGoogleDriveUploader() {
140
+ const {
141
+ user,
142
+ googleFiles: driveFiles,
143
+ handleSignOut,
144
+ token,
145
+ authCancelled,
146
+ retryAuth,
147
+ isAuthReady,
148
+ error,
149
+ ...uploaderProps
150
+ } = useGoogleDrive_default();
151
+ if (!token && (authCancelled || isAuthReady)) {
152
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
153
+ _chunkL3E5OMY7cjs.DriveAuthFallback,
154
+ {
155
+ providerName: "Google Drive",
156
+ onRetry: retryAuth,
157
+ error,
158
+ "data-upup-slot": "google-drive-uploader"
159
+ }
160
+ );
161
+ }
162
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
163
+ _chunkL3E5OMY7cjs.DriveBrowser,
164
+ {
165
+ driveFiles,
166
+ user,
167
+ handleSignOut,
168
+ error,
169
+ "data-upup-slot": "google-drive-uploader",
170
+ ...uploaderProps
171
+ }
172
+ );
173
+ }
174
+
175
+
176
+ exports.default = GoogleDriveUploader;
177
+ //# sourceMappingURL=GoogleDriveUploader-CXZUZI6R.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["c:\\Users\\amind\\OneDrive\\Desktop\\Projects\\INTERNAL\\upup\\packages\\react\\dist\\GoogleDriveUploader-CXZUZI6R.cjs"],"names":[],"mappings":"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","file":"C:\\Users\\amind\\OneDrive\\Desktop\\Projects\\INTERNAL\\upup\\packages\\react\\dist\\GoogleDriveUploader-CXZUZI6R.cjs","sourcesContent":[null]}
@@ -0,0 +1,177 @@
1
+ import {
2
+ DriveAuthFallback,
3
+ DriveBrowser,
4
+ ServerModeDriveUploader
5
+ } from "./chunk-6TFTTLOD.js";
6
+ import "./chunk-PLGHK2Y4.js";
7
+ import "./chunk-SSLP3MEC.js";
8
+ import {
9
+ useUploaderFiles,
10
+ useUploaderRuntime,
11
+ useUploaderSource
12
+ } from "./chunk-LCMDDPUD.js";
13
+
14
+ // src/hooks/useGoogleDrive.ts
15
+ import {
16
+ useCallback,
17
+ useEffect,
18
+ useRef,
19
+ useSyncExternalStore
20
+ } from "react";
21
+ import {
22
+ GOOGLE_DRIVE_DESCRIPTOR
23
+ } from "@useupup/core";
24
+ import {
25
+ DriveBrowserController
26
+ } from "@useupup/core/internal";
27
+ var SERVER_SNAPSHOT = {
28
+ user: void 0,
29
+ folder: void 0,
30
+ path: [],
31
+ selectedFiles: [],
32
+ isClickLoading: false,
33
+ showLoader: false,
34
+ isAuthReady: false,
35
+ isAuthenticated: false,
36
+ isLoading: true,
37
+ authCancelled: false,
38
+ token: void 0,
39
+ error: void 0,
40
+ hasMore: false,
41
+ isLoadingMore: false
42
+ };
43
+ function useGoogleDrive() {
44
+ var _a, _b;
45
+ const { core } = useUploaderRuntime();
46
+ const { setActiveSource } = useUploaderSource();
47
+ const { setFiles } = useUploaderFiles();
48
+ const controllerRef = useRef(null);
49
+ if (!controllerRef.current && core) {
50
+ controllerRef.current = new DriveBrowserController(
51
+ core,
52
+ GOOGLE_DRIVE_DESCRIPTOR,
53
+ {
54
+ onFilesSelected: (files) => {
55
+ setFiles(files);
56
+ },
57
+ onClose: () => {
58
+ setActiveSource(void 0);
59
+ }
60
+ }
61
+ );
62
+ }
63
+ const controller = controllerRef.current;
64
+ useEffect(() => {
65
+ controller == null ? void 0 : controller.init();
66
+ return () => controller == null ? void 0 : controller.destroy();
67
+ }, [controller]);
68
+ const state = useSyncExternalStore(
69
+ (_a = controller == null ? void 0 : controller.subscribe) != null ? _a : (() => () => {
70
+ }),
71
+ (_b = controller == null ? void 0 : controller.getSnapshot) != null ? _b : (() => SERVER_SNAPSHOT),
72
+ () => SERVER_SNAPSHOT
73
+ );
74
+ const setPath = useCallback(
75
+ (value) => controller == null ? void 0 : controller.setPath(
76
+ typeof value === "function" ? value(controller.getSnapshot().path) : value
77
+ ),
78
+ [controller]
79
+ );
80
+ return {
81
+ user: state.user,
82
+ googleFiles: state.folder,
83
+ handleSignOut: () => {
84
+ controller == null ? void 0 : controller.signOut();
85
+ return Promise.resolve();
86
+ },
87
+ token: state.token,
88
+ authCancelled: state.authCancelled,
89
+ // GoogleDrive has no separate signIn: initial consent AND retry both go
90
+ // through retryAuth (it resets authCancelled, then requests a GIS token).
91
+ retryAuth: () => controller == null ? void 0 : controller.retryAuth(),
92
+ isAuthReady: state.isAuthReady,
93
+ path: state.path,
94
+ setPath,
95
+ handleClick: (file) => controller == null ? void 0 : controller.handleClick(file),
96
+ selectedFiles: state.selectedFiles,
97
+ showLoader: state.showLoader,
98
+ handleSubmit: () => {
99
+ var _a2;
100
+ return (_a2 = controller == null ? void 0 : controller.handleSubmit()) != null ? _a2 : Promise.resolve();
101
+ },
102
+ handleCancelDownload: () => {
103
+ controller == null ? void 0 : controller.handleCancelDownload();
104
+ },
105
+ onSelectCurrentFolder: () => {
106
+ var _a2;
107
+ return (_a2 = controller == null ? void 0 : controller.onSelectCurrentFolder()) != null ? _a2 : Promise.resolve();
108
+ },
109
+ error: state.error,
110
+ hasMore: state.hasMore,
111
+ isLoadingMore: state.isLoadingMore,
112
+ loadMore: () => {
113
+ var _a2;
114
+ return (_a2 = controller == null ? void 0 : controller.loadMore()) != null ? _a2 : Promise.resolve();
115
+ },
116
+ isClickLoading: state.isClickLoading
117
+ };
118
+ }
119
+ var useGoogleDrive_default = useGoogleDrive;
120
+
121
+ // src/components/GoogleDriveUploader.tsx
122
+ import { jsx } from "react/jsx-runtime";
123
+ function GoogleDriveUploader() {
124
+ const { mode } = useUploaderRuntime();
125
+ const { setActiveSource } = useUploaderSource();
126
+ if (mode === "server") {
127
+ return /* @__PURE__ */ jsx(
128
+ ServerModeDriveUploader,
129
+ {
130
+ provider: "google-drive",
131
+ onBack: () => {
132
+ setActiveSource(void 0);
133
+ }
134
+ }
135
+ );
136
+ }
137
+ return /* @__PURE__ */ jsx(ClientGoogleDriveUploader, {});
138
+ }
139
+ function ClientGoogleDriveUploader() {
140
+ const {
141
+ user,
142
+ googleFiles: driveFiles,
143
+ handleSignOut,
144
+ token,
145
+ authCancelled,
146
+ retryAuth,
147
+ isAuthReady,
148
+ error,
149
+ ...uploaderProps
150
+ } = useGoogleDrive_default();
151
+ if (!token && (authCancelled || isAuthReady)) {
152
+ return /* @__PURE__ */ jsx(
153
+ DriveAuthFallback,
154
+ {
155
+ providerName: "Google Drive",
156
+ onRetry: retryAuth,
157
+ error,
158
+ "data-upup-slot": "google-drive-uploader"
159
+ }
160
+ );
161
+ }
162
+ return /* @__PURE__ */ jsx(
163
+ DriveBrowser,
164
+ {
165
+ driveFiles,
166
+ user,
167
+ handleSignOut,
168
+ error,
169
+ "data-upup-slot": "google-drive-uploader",
170
+ ...uploaderProps
171
+ }
172
+ );
173
+ }
174
+ export {
175
+ GoogleDriveUploader as default
176
+ };
177
+ //# sourceMappingURL=GoogleDriveUploader-YA56X3QR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useGoogleDrive.ts","../src/components/GoogleDriveUploader.tsx"],"sourcesContent":["import {\r\n useCallback,\r\n useEffect,\r\n useRef,\r\n useSyncExternalStore,\r\n type SetStateAction,\r\n} from 'react'\r\nimport {\r\n GOOGLE_DRIVE_DESCRIPTOR,\r\n type DriveFile,\r\n type DriveFolder,\r\n} from '@useupup/core'\r\nimport {\r\n DriveBrowserController,\r\n type DriveBrowserState,\r\n} from '@useupup/core/internal'\r\nimport {\r\n useUploaderFiles,\r\n useUploaderRuntime,\r\n useUploaderSource,\r\n} from '../context/UploaderContext'\r\n\r\n/** Stable fallback snapshot — mirrors DriveBrowserController constructor defaults. */\r\nconst SERVER_SNAPSHOT: DriveBrowserState = {\r\n user: undefined,\r\n folder: undefined,\r\n path: [],\r\n selectedFiles: [],\r\n isClickLoading: false,\r\n showLoader: false,\r\n isAuthReady: false,\r\n isAuthenticated: false,\r\n isLoading: true,\r\n authCancelled: false,\r\n token: undefined,\r\n error: undefined,\r\n hasMore: false,\r\n isLoadingMore: false,\r\n}\r\n\r\nexport interface UseGoogleDriveResult {\r\n user: DriveBrowserState['user']\r\n googleFiles: DriveBrowserState['folder']\r\n handleSignOut: () => Promise<void>\r\n token: DriveBrowserState['token']\r\n authCancelled: boolean\r\n retryAuth: () => void\r\n isAuthReady: boolean\r\n path: DriveFolder[]\r\n setPath: (value: SetStateAction<DriveFolder[]>) => void\r\n handleClick: (file: DriveFile) => void\r\n selectedFiles: DriveFile[]\r\n showLoader: boolean\r\n handleSubmit: () => Promise<void>\r\n handleCancelDownload: () => void\r\n onSelectCurrentFolder: () => Promise<void>\r\n error: DriveBrowserState['error']\r\n hasMore: boolean\r\n isLoadingMore: boolean\r\n loadMore: () => Promise<void>\r\n isClickLoading: boolean\r\n}\r\n\r\nexport function useGoogleDrive(): UseGoogleDriveResult {\r\n const { core } = useUploaderRuntime()\r\n const { setActiveSource } = useUploaderSource()\r\n const { setFiles } = useUploaderFiles()\r\n\r\n // GIS config (client id / api key) + GIS script loading are sourced inside the\r\n // controller (plugin.getConfig() + core loadGoogleIdentityServices), so the hook\r\n // no longer reads the drive config from context or uses useLoadGAPI.\r\n const controllerRef = useRef<DriveBrowserController | null>(null)\r\n if (!controllerRef.current && core) {\r\n controllerRef.current = new DriveBrowserController(\r\n core,\r\n GOOGLE_DRIVE_DESCRIPTOR,\r\n {\r\n onFilesSelected: files => {\r\n setFiles(files)\r\n },\r\n onClose: () => {\r\n setActiveSource(undefined)\r\n },\r\n },\r\n )\r\n }\r\n const controller = controllerRef.current\r\n\r\n useEffect(() => {\r\n controller?.init()\r\n return () => controller?.destroy()\r\n }, [controller])\r\n\r\n const state = useSyncExternalStore(\r\n controller?.subscribe ?? (() => () => {}),\r\n controller?.getSnapshot ?? (() => SERVER_SNAPSHOT),\r\n () => SERVER_SNAPSHOT,\r\n )\r\n\r\n // setPath is passed as a prop to DriveBrowser/DriveBrowserHeader, where the\r\n // breadcrumb truncates the trail by calling it with a functional updater\r\n // (`prev => prev.slice(0, i+1)`). It MUST be referentially stable across renders\r\n // (same reason useUploaderController useCallbacks its setters) and resolves that\r\n // updater against the live snapshot before delegating to the array-only\r\n // controller.setPath.\r\n const setPath = useCallback(\r\n (value: SetStateAction<DriveFolder[]>) =>\r\n controller?.setPath(\r\n typeof value === 'function'\r\n ? value(controller.getSnapshot().path)\r\n : value,\r\n ),\r\n [controller],\r\n )\r\n\r\n return {\r\n user: state.user,\r\n googleFiles: state.folder,\r\n handleSignOut: () => {\r\n controller?.signOut()\r\n return Promise.resolve()\r\n },\r\n token: state.token,\r\n authCancelled: state.authCancelled,\r\n // GoogleDrive has no separate signIn: initial consent AND retry both go\r\n // through retryAuth (it resets authCancelled, then requests a GIS token).\r\n retryAuth: () => controller?.retryAuth(),\r\n isAuthReady: state.isAuthReady,\r\n path: state.path,\r\n setPath,\r\n handleClick: (file: DriveFile) => controller?.handleClick(file),\r\n selectedFiles: state.selectedFiles,\r\n showLoader: state.showLoader,\r\n handleSubmit: () => controller?.handleSubmit() ?? Promise.resolve(),\r\n handleCancelDownload: () => {\r\n controller?.handleCancelDownload()\r\n },\r\n onSelectCurrentFolder: () =>\r\n controller?.onSelectCurrentFolder() ?? Promise.resolve(),\r\n error: state.error,\r\n hasMore: state.hasMore,\r\n isLoadingMore: state.isLoadingMore,\r\n loadMore: () => controller?.loadMore() ?? Promise.resolve(),\r\n isClickLoading: state.isClickLoading,\r\n }\r\n}\r\n\r\nexport default useGoogleDrive\r\n","import React from 'react'\r\nimport {\r\n useUploaderRuntime,\r\n useUploaderSource,\r\n} from '../context/UploaderContext'\r\nimport useGoogleDrive from '../hooks/useGoogleDrive'\r\nimport DriveAuthFallback from './shared/DriveAuthFallback'\r\nimport DriveBrowser from './shared/DriveBrowser'\r\nimport ServerModeDriveUploader from './ServerModeDriveUploader'\r\n\r\nexport default function GoogleDriveUploader(): React.ReactElement | null {\r\n const { mode } = useUploaderRuntime()\r\n const { setActiveSource } = useUploaderSource()\r\n if (mode === 'server') {\r\n return (\r\n <ServerModeDriveUploader\r\n provider=\"google-drive\"\r\n onBack={() => {\r\n setActiveSource(undefined)\r\n }}\r\n />\r\n )\r\n }\r\n return <ClientGoogleDriveUploader />\r\n}\r\n\r\nfunction ClientGoogleDriveUploader() {\r\n const {\r\n user,\r\n googleFiles: driveFiles,\r\n handleSignOut,\r\n token,\r\n authCancelled,\r\n retryAuth,\r\n isAuthReady,\r\n error,\r\n ...uploaderProps\r\n } = useGoogleDrive()\r\n\r\n if (!token && (authCancelled || isAuthReady)) {\r\n return (\r\n <DriveAuthFallback\r\n providerName=\"Google Drive\"\r\n onRetry={retryAuth}\r\n error={error}\r\n data-upup-slot=\"google-drive-uploader\"\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <DriveBrowser\r\n driveFiles={driveFiles}\r\n user={user}\r\n handleSignOut={handleSignOut}\r\n error={error}\r\n data-upup-slot=\"google-drive-uploader\"\r\n {...uploaderProps}\r\n />\r\n )\r\n}\r\n"],"mappings":"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","names":["_a"]}