@useupup/preact 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 (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +80 -0
  3. package/dist/AudioUploader-2WITC5YR-4WGBUCEB.js +298 -0
  4. package/dist/AudioUploader-2WITC5YR-4WGBUCEB.js.map +1 -0
  5. package/dist/AudioUploader-2WITC5YR-GCKVRJAT.cjs +298 -0
  6. package/dist/AudioUploader-2WITC5YR-GCKVRJAT.cjs.map +1 -0
  7. package/dist/BoxUploader-VE5LRJ7M-CWGNYYJV.js +170 -0
  8. package/dist/BoxUploader-VE5LRJ7M-CWGNYYJV.js.map +1 -0
  9. package/dist/BoxUploader-VE5LRJ7M-IE7LYW5P.cjs +170 -0
  10. package/dist/BoxUploader-VE5LRJ7M-IE7LYW5P.cjs.map +1 -0
  11. package/dist/CameraUploader-WF5A6UIS-3KBW647M.cjs +628 -0
  12. package/dist/CameraUploader-WF5A6UIS-3KBW647M.cjs.map +1 -0
  13. package/dist/CameraUploader-WF5A6UIS-DONVXSEZ.js +628 -0
  14. package/dist/CameraUploader-WF5A6UIS-DONVXSEZ.js.map +1 -0
  15. package/dist/DropboxUploader-VMUYG3OP-7FKTLIIL.cjs +172 -0
  16. package/dist/DropboxUploader-VMUYG3OP-7FKTLIIL.cjs.map +1 -0
  17. package/dist/DropboxUploader-VMUYG3OP-DBUPHIG7.js +172 -0
  18. package/dist/DropboxUploader-VMUYG3OP-DBUPHIG7.js.map +1 -0
  19. package/dist/GoogleDriveUploader-YA56X3QR-FMS6MTYU.js +175 -0
  20. package/dist/GoogleDriveUploader-YA56X3QR-FMS6MTYU.js.map +1 -0
  21. package/dist/GoogleDriveUploader-YA56X3QR-OR3CQLX2.cjs +175 -0
  22. package/dist/GoogleDriveUploader-YA56X3QR-OR3CQLX2.cjs.map +1 -0
  23. package/dist/ImageEditorInline-N2NSAODR-QWXPP3ON.js +184 -0
  24. package/dist/ImageEditorInline-N2NSAODR-QWXPP3ON.js.map +1 -0
  25. package/dist/ImageEditorInline-N2NSAODR-ZVAM6EOA.cjs +184 -0
  26. package/dist/ImageEditorInline-N2NSAODR-ZVAM6EOA.cjs.map +1 -0
  27. package/dist/ImageEditorModal-CWKMDVPY-PRD43JPH.cjs +236 -0
  28. package/dist/ImageEditorModal-CWKMDVPY-PRD43JPH.cjs.map +1 -0
  29. package/dist/ImageEditorModal-CWKMDVPY-ZRPTYHYN.js +236 -0
  30. package/dist/ImageEditorModal-CWKMDVPY-ZRPTYHYN.js.map +1 -0
  31. package/dist/OneDriveUploader-I25Y6AJP-FVXK6RGT.js +173 -0
  32. package/dist/OneDriveUploader-I25Y6AJP-FVXK6RGT.js.map +1 -0
  33. package/dist/OneDriveUploader-I25Y6AJP-GBOBEJQR.cjs +173 -0
  34. package/dist/OneDriveUploader-I25Y6AJP-GBOBEJQR.cjs.map +1 -0
  35. package/dist/ScreenCaptureUploader-WKDO4S75-3TT6GNEN.js +286 -0
  36. package/dist/ScreenCaptureUploader-WKDO4S75-3TT6GNEN.js.map +1 -0
  37. package/dist/ScreenCaptureUploader-WKDO4S75-G7ADH264.cjs +286 -0
  38. package/dist/ScreenCaptureUploader-WKDO4S75-G7ADH264.cjs.map +1 -0
  39. package/dist/chunk-2XFVSPFN.cjs +293 -0
  40. package/dist/chunk-2XFVSPFN.cjs.map +1 -0
  41. package/dist/chunk-7JLN2HMZ.cjs +4296 -0
  42. package/dist/chunk-7JLN2HMZ.cjs.map +1 -0
  43. package/dist/chunk-BVMKSTAE.js +4296 -0
  44. package/dist/chunk-BVMKSTAE.js.map +1 -0
  45. package/dist/chunk-C7QBCXAH.js +39 -0
  46. package/dist/chunk-C7QBCXAH.js.map +1 -0
  47. package/dist/chunk-CR6CXFRP.js +195 -0
  48. package/dist/chunk-CR6CXFRP.js.map +1 -0
  49. package/dist/chunk-ETIJATY7.cjs +39 -0
  50. package/dist/chunk-ETIJATY7.cjs.map +1 -0
  51. package/dist/chunk-FH3LYESR.js +411 -0
  52. package/dist/chunk-FH3LYESR.js.map +1 -0
  53. package/dist/chunk-GKMTOOTQ.cjs +411 -0
  54. package/dist/chunk-GKMTOOTQ.cjs.map +1 -0
  55. package/dist/chunk-KHH3WHWU.js +74 -0
  56. package/dist/chunk-KHH3WHWU.js.map +1 -0
  57. package/dist/chunk-V2O5HRJV.cjs +74 -0
  58. package/dist/chunk-V2O5HRJV.cjs.map +1 -0
  59. package/dist/chunk-WCI3AGJV.js +831 -0
  60. package/dist/chunk-WCI3AGJV.js.map +1 -0
  61. package/dist/chunk-YWJHE7U4.cjs +195 -0
  62. package/dist/chunk-YWJHE7U4.cjs.map +1 -0
  63. package/dist/chunk-ZGWETRKI.js +293 -0
  64. package/dist/chunk-ZGWETRKI.js.map +1 -0
  65. package/dist/chunk-ZKZJ5PPP.cjs +831 -0
  66. package/dist/chunk-ZKZJ5PPP.cjs.map +1 -0
  67. package/dist/filerobot-bridge-52YH7W2M.cjs +92 -0
  68. package/dist/filerobot-bridge-52YH7W2M.cjs.map +1 -0
  69. package/dist/filerobot-bridge-ED4XMHX4.js +92 -0
  70. package/dist/filerobot-bridge-ED4XMHX4.js.map +1 -0
  71. package/dist/filerobot-island.css +97 -0
  72. package/dist/filerobot-island.css.map +1 -0
  73. package/dist/filerobot-island.js +77951 -0
  74. package/dist/filerobot-island.js.map +1 -0
  75. package/dist/index.cjs +5600 -0
  76. package/dist/index.cjs.map +1 -0
  77. package/dist/index.d.cts +1 -0
  78. package/dist/index.d.ts +1 -0
  79. package/dist/index.js +5600 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/styles.d.ts +4 -0
  82. package/dist/tailwind-prefixed.css +2529 -0
  83. package/package.json +130 -0
@@ -0,0 +1,173 @@
1
+ import {
2
+ DriveAuthFallback,
3
+ DriveBrowser,
4
+ ServerModeDriveUploader
5
+ } from "./chunk-WCI3AGJV.js";
6
+ import "./chunk-BVMKSTAE.js";
7
+ import "./chunk-C7QBCXAH.js";
8
+ import {
9
+ u,
10
+ useUploaderFiles,
11
+ useUploaderRuntime,
12
+ useUploaderSource
13
+ } from "./chunk-ZGWETRKI.js";
14
+ import {
15
+ C,
16
+ compat_module_exports,
17
+ init_compat_module
18
+ } from "./chunk-FH3LYESR.js";
19
+
20
+ // ../react/dist/OneDriveUploader-I25Y6AJP.js
21
+ init_compat_module();
22
+ import {
23
+ ONE_DRIVE_DESCRIPTOR
24
+ } from "@useupup/core";
25
+ import {
26
+ DriveBrowserController
27
+ } from "@useupup/core/internal";
28
+ var SERVER_SNAPSHOT = {
29
+ user: void 0,
30
+ folder: void 0,
31
+ path: [],
32
+ selectedFiles: [],
33
+ isClickLoading: false,
34
+ showLoader: false,
35
+ isAuthReady: false,
36
+ isAuthenticated: false,
37
+ isLoading: true,
38
+ authCancelled: false,
39
+ token: void 0,
40
+ error: void 0,
41
+ hasMore: false,
42
+ isLoadingMore: false
43
+ };
44
+ function useOneDrive() {
45
+ var _a, _b;
46
+ const { core } = useUploaderRuntime();
47
+ const { setActiveSource } = useUploaderSource();
48
+ const { setFiles } = useUploaderFiles();
49
+ const controllerRef = (0, compat_module_exports.useRef)(null);
50
+ if (!controllerRef.current && core) {
51
+ controllerRef.current = new DriveBrowserController(
52
+ core,
53
+ ONE_DRIVE_DESCRIPTOR,
54
+ {
55
+ onFilesSelected: (files) => {
56
+ setFiles(files);
57
+ },
58
+ onClose: () => {
59
+ setActiveSource(void 0);
60
+ }
61
+ }
62
+ );
63
+ }
64
+ const controller = controllerRef.current;
65
+ (0, compat_module_exports.useEffect)(() => {
66
+ controller == null ? void 0 : controller.init();
67
+ return () => controller == null ? void 0 : controller.destroy();
68
+ }, [controller]);
69
+ const state = C(
70
+ (_a = controller == null ? void 0 : controller.subscribe) != null ? _a : (() => () => {
71
+ }),
72
+ (_b = controller == null ? void 0 : controller.getSnapshot) != null ? _b : (() => SERVER_SNAPSHOT),
73
+ () => SERVER_SNAPSHOT
74
+ );
75
+ const setPath = (0, compat_module_exports.useCallback)(
76
+ (value) => controller == null ? void 0 : controller.setPath(
77
+ typeof value === "function" ? value(controller.getSnapshot().path) : value
78
+ ),
79
+ [controller]
80
+ );
81
+ return {
82
+ user: state.user,
83
+ oneDriveFiles: state.folder,
84
+ signOut: () => controller == null ? void 0 : controller.signOut(),
85
+ signIn: () => controller == null ? void 0 : controller.signIn(),
86
+ authenticate: () => controller == null ? void 0 : controller.signIn(),
87
+ // 'active' is a presence sentinel the component checks via `!token`; the real
88
+ // GIS token lives in state.token and is intentionally not surfaced here.
89
+ token: state.isAuthenticated ? "active" : void 0,
90
+ isAuthenticated: state.isAuthenticated,
91
+ isLoading: state.isLoading,
92
+ path: state.path,
93
+ setPath,
94
+ isClickLoading: state.isClickLoading,
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
+ };
117
+ }
118
+ function OneDriveUploader() {
119
+ const { mode } = useUploaderRuntime();
120
+ const { setActiveSource } = useUploaderSource();
121
+ if (mode === "server") {
122
+ return /* @__PURE__ */ u(
123
+ ServerModeDriveUploader,
124
+ {
125
+ provider: "one-drive",
126
+ onBack: () => {
127
+ setActiveSource(void 0);
128
+ }
129
+ }
130
+ );
131
+ }
132
+ return /* @__PURE__ */ u(ClientOneDriveUploader, {});
133
+ }
134
+ function ClientOneDriveUploader() {
135
+ const {
136
+ user,
137
+ oneDriveFiles: driveFiles,
138
+ signOut,
139
+ token,
140
+ isAuthenticated,
141
+ authenticate,
142
+ isLoading,
143
+ ...uploaderProps
144
+ } = useOneDrive();
145
+ const handleSignOut = async () => {
146
+ signOut();
147
+ return Promise.resolve();
148
+ };
149
+ if (!isAuthenticated && !token && !isLoading) {
150
+ return /* @__PURE__ */ u(
151
+ DriveAuthFallback,
152
+ {
153
+ providerName: "OneDrive",
154
+ onRetry: authenticate,
155
+ "data-upup-slot": "one-drive-uploader"
156
+ }
157
+ );
158
+ }
159
+ return /* @__PURE__ */ u(
160
+ DriveBrowser,
161
+ {
162
+ driveFiles,
163
+ user,
164
+ handleSignOut,
165
+ "data-upup-slot": "one-drive-uploader",
166
+ ...uploaderProps
167
+ }
168
+ );
169
+ }
170
+ export {
171
+ OneDriveUploader as default
172
+ };
173
+ //# sourceMappingURL=OneDriveUploader-I25Y6AJP-FVXK6RGT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../react/src/hooks/useOneDrive.ts","../../react/src/components/OneDriveUploader.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 ONE_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 for the first render (core is created post-paint, so the\r\n * controller is briefly null) and for useSyncExternalStore's server snapshot.\r\n * Mirrors the 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 UseOneDriveResult {\r\n user: DriveBrowserState['user']\r\n oneDriveFiles: DriveBrowserState['folder']\r\n signOut: () => void\r\n signIn: () => 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 default function useOneDrive(): UseOneDriveResult {\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 ONE_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 oneDriveFiles: state.folder,\r\n signOut: () => controller?.signOut(),\r\n signIn: () => controller?.signIn(),\r\n authenticate: () => controller?.signIn(),\r\n // 'active' is a presence sentinel the component checks via `!token`; the real\r\n // GIS 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 useOneDrive from '../hooks/useOneDrive'\r\nimport DriveAuthFallback from './shared/DriveAuthFallback'\r\nimport DriveBrowser from './shared/DriveBrowser'\r\nimport ServerModeDriveUploader from './ServerModeDriveUploader'\r\n\r\nexport default function OneDriveUploader(): 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=\"one-drive\"\r\n onBack={() => {\r\n setActiveSource(undefined)\r\n }}\r\n />\r\n )\r\n }\r\n return <ClientOneDriveUploader />\r\n}\r\n\r\nfunction ClientOneDriveUploader() {\r\n const {\r\n user,\r\n oneDriveFiles: driveFiles,\r\n signOut,\r\n token,\r\n isAuthenticated,\r\n authenticate,\r\n isLoading,\r\n ...uploaderProps\r\n } = useOneDrive()\r\n\r\n const handleSignOut = async () => {\r\n signOut()\r\n return Promise.resolve()\r\n }\r\n\r\n if (!isAuthenticated && !token && !isLoading) {\r\n return (\r\n <DriveAuthFallback\r\n providerName=\"OneDrive\"\r\n onRetry={authenticate}\r\n data-upup-slot=\"one-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 data-upup-slot=\"one-drive-uploader\"\r\n {...uploaderProps}\r\n />\r\n )\r\n}\r\n"],"mappings":"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","names":["_a"]}
@@ -0,0 +1,173 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+ var _chunkZKZJ5PPPcjs = require('./chunk-ZKZJ5PPP.cjs');
6
+ require('./chunk-7JLN2HMZ.cjs');
7
+ require('./chunk-ETIJATY7.cjs');
8
+
9
+
10
+
11
+
12
+
13
+ var _chunk2XFVSPFNcjs = require('./chunk-2XFVSPFN.cjs');
14
+
15
+
16
+
17
+
18
+ var _chunkGKMTOOTQcjs = require('./chunk-GKMTOOTQ.cjs');
19
+
20
+ // ../react/dist/OneDriveUploader-I25Y6AJP.js
21
+ _chunkGKMTOOTQcjs.init_compat_module.call(void 0, );
22
+
23
+
24
+ var _core = require('@useupup/core');
25
+
26
+
27
+ var _internal = require('@useupup/core/internal');
28
+ var SERVER_SNAPSHOT = {
29
+ user: void 0,
30
+ folder: void 0,
31
+ path: [],
32
+ selectedFiles: [],
33
+ isClickLoading: false,
34
+ showLoader: false,
35
+ isAuthReady: false,
36
+ isAuthenticated: false,
37
+ isLoading: true,
38
+ authCancelled: false,
39
+ token: void 0,
40
+ error: void 0,
41
+ hasMore: false,
42
+ isLoadingMore: false
43
+ };
44
+ function useOneDrive() {
45
+ var _a, _b;
46
+ const { core } = _chunk2XFVSPFNcjs.useUploaderRuntime.call(void 0, );
47
+ const { setActiveSource } = _chunk2XFVSPFNcjs.useUploaderSource.call(void 0, );
48
+ const { setFiles } = _chunk2XFVSPFNcjs.useUploaderFiles.call(void 0, );
49
+ const controllerRef = (0, _chunkGKMTOOTQcjs.compat_module_exports.useRef)(null);
50
+ if (!controllerRef.current && core) {
51
+ controllerRef.current = new (0, _internal.DriveBrowserController)(
52
+ core,
53
+ _core.ONE_DRIVE_DESCRIPTOR,
54
+ {
55
+ onFilesSelected: (files) => {
56
+ setFiles(files);
57
+ },
58
+ onClose: () => {
59
+ setActiveSource(void 0);
60
+ }
61
+ }
62
+ );
63
+ }
64
+ const controller = controllerRef.current;
65
+ (0, _chunkGKMTOOTQcjs.compat_module_exports.useEffect)(() => {
66
+ controller == null ? void 0 : controller.init();
67
+ return () => controller == null ? void 0 : controller.destroy();
68
+ }, [controller]);
69
+ const state = _chunkGKMTOOTQcjs.C.call(void 0,
70
+ (_a = controller == null ? void 0 : controller.subscribe) != null ? _a : (() => () => {
71
+ }),
72
+ (_b = controller == null ? void 0 : controller.getSnapshot) != null ? _b : (() => SERVER_SNAPSHOT),
73
+ () => SERVER_SNAPSHOT
74
+ );
75
+ const setPath = (0, _chunkGKMTOOTQcjs.compat_module_exports.useCallback)(
76
+ (value) => controller == null ? void 0 : controller.setPath(
77
+ typeof value === "function" ? value(controller.getSnapshot().path) : value
78
+ ),
79
+ [controller]
80
+ );
81
+ return {
82
+ user: state.user,
83
+ oneDriveFiles: state.folder,
84
+ signOut: () => controller == null ? void 0 : controller.signOut(),
85
+ signIn: () => controller == null ? void 0 : controller.signIn(),
86
+ authenticate: () => controller == null ? void 0 : controller.signIn(),
87
+ // 'active' is a presence sentinel the component checks via `!token`; the real
88
+ // GIS token lives in state.token and is intentionally not surfaced here.
89
+ token: state.isAuthenticated ? "active" : void 0,
90
+ isAuthenticated: state.isAuthenticated,
91
+ isLoading: state.isLoading,
92
+ path: state.path,
93
+ setPath,
94
+ isClickLoading: state.isClickLoading,
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
+ };
117
+ }
118
+ function OneDriveUploader() {
119
+ const { mode } = _chunk2XFVSPFNcjs.useUploaderRuntime.call(void 0, );
120
+ const { setActiveSource } = _chunk2XFVSPFNcjs.useUploaderSource.call(void 0, );
121
+ if (mode === "server") {
122
+ return /* @__PURE__ */ _chunk2XFVSPFNcjs.u.call(void 0,
123
+ _chunkZKZJ5PPPcjs.ServerModeDriveUploader,
124
+ {
125
+ provider: "one-drive",
126
+ onBack: () => {
127
+ setActiveSource(void 0);
128
+ }
129
+ }
130
+ );
131
+ }
132
+ return /* @__PURE__ */ _chunk2XFVSPFNcjs.u.call(void 0, ClientOneDriveUploader, {});
133
+ }
134
+ function ClientOneDriveUploader() {
135
+ const {
136
+ user,
137
+ oneDriveFiles: driveFiles,
138
+ signOut,
139
+ token,
140
+ isAuthenticated,
141
+ authenticate,
142
+ isLoading,
143
+ ...uploaderProps
144
+ } = useOneDrive();
145
+ const handleSignOut = async () => {
146
+ signOut();
147
+ return Promise.resolve();
148
+ };
149
+ if (!isAuthenticated && !token && !isLoading) {
150
+ return /* @__PURE__ */ _chunk2XFVSPFNcjs.u.call(void 0,
151
+ _chunkZKZJ5PPPcjs.DriveAuthFallback,
152
+ {
153
+ providerName: "OneDrive",
154
+ onRetry: authenticate,
155
+ "data-upup-slot": "one-drive-uploader"
156
+ }
157
+ );
158
+ }
159
+ return /* @__PURE__ */ _chunk2XFVSPFNcjs.u.call(void 0,
160
+ _chunkZKZJ5PPPcjs.DriveBrowser,
161
+ {
162
+ driveFiles,
163
+ user,
164
+ handleSignOut,
165
+ "data-upup-slot": "one-drive-uploader",
166
+ ...uploaderProps
167
+ }
168
+ );
169
+ }
170
+
171
+
172
+ exports.default = OneDriveUploader;
173
+ //# sourceMappingURL=OneDriveUploader-I25Y6AJP-GBOBEJQR.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["c:\\Users\\amind\\OneDrive\\Desktop\\Projects\\INTERNAL\\upup\\packages\\preact\\dist\\OneDriveUploader-I25Y6AJP-GBOBEJQR.cjs"],"names":[],"mappings":"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","file":"C:\\Users\\amind\\OneDrive\\Desktop\\Projects\\INTERNAL\\upup\\packages\\preact\\dist\\OneDriveUploader-I25Y6AJP-GBOBEJQR.cjs","sourcesContent":[null]}
@@ -0,0 +1,286 @@
1
+ import {
2
+ SourceViewContainer
3
+ } from "./chunk-C7QBCXAH.js";
4
+ import {
5
+ Fragment,
6
+ u,
7
+ useUploaderFiles,
8
+ useUploaderSource,
9
+ useUploaderTheme
10
+ } from "./chunk-ZGWETRKI.js";
11
+ import {
12
+ compat_module_exports,
13
+ init_compat_module
14
+ } from "./chunk-FH3LYESR.js";
15
+
16
+ // ../react/dist/ScreenCaptureUploader-WKDO4S75.js
17
+ init_compat_module();
18
+ import { cn } from "@useupup/core/internal";
19
+ function ScreenCaptureUploader() {
20
+ const { setFiles } = useUploaderFiles();
21
+ const { setActiveSource } = useUploaderSource();
22
+ const { isDark: dark } = useUploaderTheme();
23
+ const [state, setState] = (0, compat_module_exports.useState)("idle");
24
+ const [duration, setDuration] = (0, compat_module_exports.useState)(0);
25
+ const [videoUrl, setVideoUrl] = (0, compat_module_exports.useState)(null);
26
+ const [error, setError] = (0, compat_module_exports.useState)(null);
27
+ const mediaRecorder = (0, compat_module_exports.useRef)(null);
28
+ const chunks = (0, compat_module_exports.useRef)([]);
29
+ const timerRef = (0, compat_module_exports.useRef)(null);
30
+ const streamRef = (0, compat_module_exports.useRef)(null);
31
+ const videoRef = (0, compat_module_exports.useRef)(null);
32
+ const previewRef = (0, compat_module_exports.useRef)(null);
33
+ (0, compat_module_exports.useEffect)(() => {
34
+ return () => {
35
+ var _a;
36
+ if (timerRef.current) clearInterval(timerRef.current);
37
+ if (videoUrl) URL.revokeObjectURL(videoUrl);
38
+ (_a = streamRef.current) == null ? void 0 : _a.getTracks().forEach((t) => {
39
+ t.stop();
40
+ });
41
+ };
42
+ }, [videoUrl]);
43
+ const bindPreview = (0, compat_module_exports.useCallback)((el) => {
44
+ var _a;
45
+ previewRef.current = el;
46
+ if (el && streamRef.current) {
47
+ el.srcObject = streamRef.current;
48
+ (_a = el.play()) == null ? void 0 : _a.catch(() => {
49
+ });
50
+ }
51
+ }, []);
52
+ const startRecording = (0, compat_module_exports.useCallback)(async () => {
53
+ try {
54
+ const stream = await navigator.mediaDevices.getDisplayMedia({
55
+ video: true,
56
+ audio: true
57
+ });
58
+ streamRef.current = stream;
59
+ chunks.current = [];
60
+ const videoTrack = stream.getVideoTracks()[0];
61
+ if (videoTrack) {
62
+ videoTrack.onended = () => {
63
+ if (mediaRecorder.current && mediaRecorder.current.state !== "inactive") {
64
+ mediaRecorder.current.stop();
65
+ }
66
+ if (timerRef.current) clearInterval(timerRef.current);
67
+ setState("recorded");
68
+ };
69
+ }
70
+ const recorder = new MediaRecorder(stream);
71
+ mediaRecorder.current = recorder;
72
+ recorder.ondataavailable = (e) => {
73
+ if (e.data.size > 0) chunks.current.push(e.data);
74
+ };
75
+ recorder.onstop = () => {
76
+ const blob = new Blob(chunks.current, {
77
+ type: recorder.mimeType || "video/webm"
78
+ });
79
+ setVideoUrl(URL.createObjectURL(blob));
80
+ stream.getTracks().forEach((t) => {
81
+ t.stop();
82
+ });
83
+ if (previewRef.current) previewRef.current.srcObject = null;
84
+ };
85
+ recorder.start();
86
+ setState("recording");
87
+ setDuration(0);
88
+ timerRef.current = setInterval(() => {
89
+ setDuration((d) => d + 1);
90
+ }, 1e3);
91
+ } catch {
92
+ setError(
93
+ "Screen sharing was cancelled or denied. Please try again."
94
+ );
95
+ }
96
+ }, []);
97
+ const stopRecording = (0, compat_module_exports.useCallback)(() => {
98
+ var _a;
99
+ (_a = mediaRecorder.current) == null ? void 0 : _a.stop();
100
+ if (timerRef.current) clearInterval(timerRef.current);
101
+ setState("recorded");
102
+ }, []);
103
+ const discardRecording = (0, compat_module_exports.useCallback)(() => {
104
+ if (videoUrl) URL.revokeObjectURL(videoUrl);
105
+ setVideoUrl(null);
106
+ setDuration(0);
107
+ setState("idle");
108
+ }, [videoUrl]);
109
+ const addRecording = (0, compat_module_exports.useCallback)(() => {
110
+ if (!videoUrl) return;
111
+ void fetch(videoUrl).then((r) => r.blob()).then((blob) => {
112
+ const file = new File(
113
+ [blob],
114
+ `screen-recording-${Date.now()}.webm`,
115
+ { type: blob.type }
116
+ );
117
+ setFiles([file]);
118
+ setActiveSource(void 0);
119
+ }).catch(() => {
120
+ });
121
+ }, [videoUrl, setFiles, setActiveSource]);
122
+ const formatTime = (s) => {
123
+ const m = Math.floor(s / 60);
124
+ const sec = s % 60;
125
+ return `${m}:${sec.toString().padStart(2, "0")}`;
126
+ };
127
+ if (error) {
128
+ return /* @__PURE__ */ u(SourceViewContainer, { "data-upup-slot": "screen-capture-uploader", children: /* @__PURE__ */ u("div", { className: "upup-flex upup-flex-col upup-items-center upup-gap-3 upup-p-6 upup-text-center", children: [
129
+ /* @__PURE__ */ u(
130
+ "p",
131
+ {
132
+ className: cn("upup-text-sm upup-text-red-500", {
133
+ "upup-text-red-400": dark
134
+ }),
135
+ children: error
136
+ }
137
+ ),
138
+ /* @__PURE__ */ u(
139
+ "button",
140
+ {
141
+ type: "button",
142
+ className: cn(
143
+ "upup-rounded-lg upup-bg-[#0ea5e9] upup-px-4 upup-py-2 upup-text-sm upup-font-medium upup-text-white",
144
+ {
145
+ "upup-bg-[#38bdf8] dark:upup-bg-[#38bdf8]": dark
146
+ }
147
+ ),
148
+ onClick: () => {
149
+ setError(null);
150
+ void startRecording();
151
+ },
152
+ children: "Try Again"
153
+ }
154
+ )
155
+ ] }) });
156
+ }
157
+ return /* @__PURE__ */ u(SourceViewContainer, { "data-upup-slot": "screen-capture-uploader", children: /* @__PURE__ */ u("div", { className: "upup-flex upup-h-full upup-w-full upup-flex-col upup-items-center upup-justify-center upup-gap-4 upup-p-4", children: [
158
+ state === "idle" && /* @__PURE__ */ u("div", { className: "upup-flex upup-flex-col upup-items-center upup-gap-4", children: [
159
+ /* @__PURE__ */ u(
160
+ "div",
161
+ {
162
+ className: cn(
163
+ "upup-flex upup-h-20 upup-w-20 upup-items-center upup-justify-center upup-rounded-full upup-bg-[#0ea5e9]/20"
164
+ ),
165
+ children: /* @__PURE__ */ u(
166
+ "svg",
167
+ {
168
+ xmlns: "http://www.w3.org/2000/svg",
169
+ width: "32",
170
+ height: "32",
171
+ viewBox: "0 0 24 24",
172
+ fill: "none",
173
+ stroke: dark ? "#38bdf8" : "#0284c7",
174
+ strokeWidth: "2",
175
+ strokeLinecap: "round",
176
+ strokeLinejoin: "round",
177
+ children: [
178
+ /* @__PURE__ */ u(
179
+ "rect",
180
+ {
181
+ width: "20",
182
+ height: "15",
183
+ x: "2",
184
+ y: "3",
185
+ rx: "2"
186
+ }
187
+ ),
188
+ /* @__PURE__ */ u("polyline", { points: "8 21 16 21" }),
189
+ /* @__PURE__ */ u("line", { x1: "12", x2: "12", y1: "18", y2: "21" })
190
+ ]
191
+ }
192
+ )
193
+ }
194
+ ),
195
+ /* @__PURE__ */ u(
196
+ "button",
197
+ {
198
+ type: "button",
199
+ className: cn(
200
+ "upup-rounded-lg upup-bg-[#0ea5e9] upup-px-6 upup-py-2.5 upup-text-sm upup-font-medium upup-text-white upup-transition-colors hover:upup-bg-[#0284c7]",
201
+ {
202
+ "upup-bg-[#38bdf8] hover:upup-bg-[#0ea5e9] dark:upup-bg-[#38bdf8]": dark
203
+ }
204
+ ),
205
+ onClick: () => {
206
+ void startRecording();
207
+ },
208
+ children: "Share Screen"
209
+ }
210
+ )
211
+ ] }),
212
+ state === "recording" && /* @__PURE__ */ u(Fragment, { children: [
213
+ /* @__PURE__ */ u("div", { className: "upup-relative upup-flex upup-min-h-0 upup-w-full upup-max-w-md upup-flex-1", children: [
214
+ /* @__PURE__ */ u(
215
+ "video",
216
+ {
217
+ ref: bindPreview,
218
+ muted: true,
219
+ className: "upup-min-h-0 upup-w-full upup-flex-1 upup-rounded-lg upup-object-contain"
220
+ }
221
+ ),
222
+ /* @__PURE__ */ u(
223
+ "div",
224
+ {
225
+ "data-upup-slot": "screen-rec-chip",
226
+ className: "upup-absolute upup-left-2.5 upup-top-2.5 upup-flex upup-items-center upup-gap-1.5 upup-rounded-md upup-bg-[#04080f]/60 upup-px-2 upup-py-1 upup-font-mono upup-text-[11px] upup-tabular-nums upup-text-[#fecdd3]",
227
+ children: [
228
+ /* @__PURE__ */ u("span", { className: "upup-animate-fx-rec-pulse upup-h-2 upup-w-2 upup-rounded-full upup-bg-red-500" }),
229
+ "REC ",
230
+ formatTime(duration)
231
+ ]
232
+ }
233
+ )
234
+ ] }),
235
+ /* @__PURE__ */ u(
236
+ "button",
237
+ {
238
+ type: "button",
239
+ className: "upup-fx-press upup-rounded-lg upup-bg-red-500 upup-px-6 upup-py-2.5 upup-text-sm upup-font-medium upup-text-white upup-transition-colors hover:upup-bg-red-600",
240
+ onClick: stopRecording,
241
+ children: "Stop Recording"
242
+ }
243
+ )
244
+ ] }),
245
+ state === "recorded" && videoUrl && /* @__PURE__ */ u(Fragment, { children: [
246
+ /* @__PURE__ */ u(
247
+ "video",
248
+ {
249
+ ref: videoRef,
250
+ controls: true,
251
+ src: videoUrl,
252
+ className: "upup-w-full upup-max-w-md upup-min-h-0 upup-flex-1 upup-rounded-lg upup-object-contain"
253
+ }
254
+ ),
255
+ /* @__PURE__ */ u("div", { className: "upup-flex upup-gap-3", children: [
256
+ /* @__PURE__ */ u(
257
+ "button",
258
+ {
259
+ type: "button",
260
+ className: "upup-rounded-lg upup-bg-gray-500 upup-px-4 upup-py-2.5 upup-text-sm upup-font-medium upup-text-white upup-transition-colors hover:upup-bg-gray-600",
261
+ onClick: discardRecording,
262
+ children: "Discard"
263
+ }
264
+ ),
265
+ /* @__PURE__ */ u(
266
+ "button",
267
+ {
268
+ type: "button",
269
+ className: cn(
270
+ "upup-rounded-lg upup-bg-[#0ea5e9] upup-px-4 upup-py-2.5 upup-text-sm upup-font-medium upup-text-white upup-transition-colors hover:upup-bg-[#0284c7]",
271
+ {
272
+ "upup-bg-[#38bdf8] hover:upup-bg-[#0ea5e9] dark:upup-bg-[#38bdf8]": dark
273
+ }
274
+ ),
275
+ onClick: addRecording,
276
+ children: "Add Recording"
277
+ }
278
+ )
279
+ ] })
280
+ ] })
281
+ ] }) });
282
+ }
283
+ export {
284
+ ScreenCaptureUploader as default
285
+ };
286
+ //# sourceMappingURL=ScreenCaptureUploader-WKDO4S75-3TT6GNEN.js.map