@useupup/vue 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +67 -0
- package/dist/AudioUploader-6ZMGQ3GT.cjs +376 -0
- package/dist/AudioUploader-6ZMGQ3GT.cjs.map +1 -0
- package/dist/AudioUploader-IEWPI3TS.js +376 -0
- package/dist/AudioUploader-IEWPI3TS.js.map +1 -0
- package/dist/BoxUploader-S6CGJLO7.cjs +214 -0
- package/dist/BoxUploader-S6CGJLO7.cjs.map +1 -0
- package/dist/BoxUploader-TIDCYWMC.js +214 -0
- package/dist/BoxUploader-TIDCYWMC.js.map +1 -0
- package/dist/CameraUploader-575RARRY.js +258 -0
- package/dist/CameraUploader-575RARRY.js.map +1 -0
- package/dist/CameraUploader-LBIVBECB.cjs +258 -0
- package/dist/CameraUploader-LBIVBECB.cjs.map +1 -0
- package/dist/DropboxUploader-HTGDBDTB.cjs +216 -0
- package/dist/DropboxUploader-HTGDBDTB.cjs.map +1 -0
- package/dist/DropboxUploader-M2LY2Q32.js +216 -0
- package/dist/DropboxUploader-M2LY2Q32.js.map +1 -0
- package/dist/GoogleDriveUploader-R3WJYLW7.cjs +220 -0
- package/dist/GoogleDriveUploader-R3WJYLW7.cjs.map +1 -0
- package/dist/GoogleDriveUploader-SAY4C2QY.js +220 -0
- package/dist/GoogleDriveUploader-SAY4C2QY.js.map +1 -0
- package/dist/OneDriveUploader-EDB3RJA4.js +219 -0
- package/dist/OneDriveUploader-EDB3RJA4.js.map +1 -0
- package/dist/OneDriveUploader-WYALTOCQ.cjs +219 -0
- package/dist/OneDriveUploader-WYALTOCQ.cjs.map +1 -0
- package/dist/ScreenCaptureUploader-F65CM6OA.js +334 -0
- package/dist/ScreenCaptureUploader-F65CM6OA.js.map +1 -0
- package/dist/ScreenCaptureUploader-TZ74W7WQ.cjs +334 -0
- package/dist/ScreenCaptureUploader-TZ74W7WQ.cjs.map +1 -0
- package/dist/UrlUploader-PXEGUBQ4.js +143 -0
- package/dist/UrlUploader-PXEGUBQ4.js.map +1 -0
- package/dist/UrlUploader-TLYGV433.cjs +143 -0
- package/dist/UrlUploader-TLYGV433.cjs.map +1 -0
- package/dist/assets/logos.d.ts +5 -0
- package/dist/assets/logos.d.ts.map +1 -0
- package/dist/chunk-D32QOALR.cjs +1083 -0
- package/dist/chunk-D32QOALR.cjs.map +1 -0
- package/dist/chunk-GG4ABGXB.cjs +62 -0
- package/dist/chunk-GG4ABGXB.cjs.map +1 -0
- package/dist/chunk-GVB7IFRP.cjs +0 -0
- package/dist/chunk-GVB7IFRP.cjs.map +1 -0
- package/dist/chunk-IXLKUMV2.cjs +55 -0
- package/dist/chunk-IXLKUMV2.cjs.map +1 -0
- package/dist/chunk-M6AHIQ3M.js +62 -0
- package/dist/chunk-M6AHIQ3M.js.map +1 -0
- package/dist/chunk-PPPFIWFQ.js +1083 -0
- package/dist/chunk-PPPFIWFQ.js.map +1 -0
- package/dist/chunk-RZ7RTSRZ.js +55 -0
- package/dist/chunk-RZ7RTSRZ.js.map +1 -0
- package/dist/chunk-X6FZTCNT.js +0 -0
- package/dist/chunk-X6FZTCNT.js.map +1 -0
- package/dist/components/AudioUploader.vue.d.ts +3 -0
- package/dist/components/AudioUploader.vue.d.ts.map +1 -0
- package/dist/components/AudioWaveform.vue.d.ts +16 -0
- package/dist/components/AudioWaveform.vue.d.ts.map +1 -0
- package/dist/components/BoxUploader.vue.d.ts +3 -0
- package/dist/components/BoxUploader.vue.d.ts.map +1 -0
- package/dist/components/CameraUploader.vue.d.ts +3 -0
- package/dist/components/CameraUploader.vue.d.ts.map +1 -0
- package/dist/components/ClientBoxUploader.vue.d.ts +3 -0
- package/dist/components/ClientBoxUploader.vue.d.ts.map +1 -0
- package/dist/components/ClientDropboxUploader.vue.d.ts +3 -0
- package/dist/components/ClientDropboxUploader.vue.d.ts.map +1 -0
- package/dist/components/ClientGoogleDriveUploader.vue.d.ts +3 -0
- package/dist/components/ClientGoogleDriveUploader.vue.d.ts.map +1 -0
- package/dist/components/ClientOneDriveUploader.vue.d.ts +3 -0
- package/dist/components/ClientOneDriveUploader.vue.d.ts.map +1 -0
- package/dist/components/DefaultLoaderIcon.vue.d.ts +3 -0
- package/dist/components/DefaultLoaderIcon.vue.d.ts.map +1 -0
- package/dist/components/DropboxUploader.vue.d.ts +3 -0
- package/dist/components/DropboxUploader.vue.d.ts.map +1 -0
- package/dist/components/FileHero.vue.d.ts +13 -0
- package/dist/components/FileHero.vue.d.ts.map +1 -0
- package/dist/components/FileIcon.vue.d.ts +9 -0
- package/dist/components/FileIcon.vue.d.ts.map +1 -0
- package/dist/components/FileItem.vue.d.ts +14 -0
- package/dist/components/FileItem.vue.d.ts.map +1 -0
- package/dist/components/FileList.vue.d.ts +3 -0
- package/dist/components/FileList.vue.d.ts.map +1 -0
- package/dist/components/FilePreview.vue.d.ts +22 -0
- package/dist/components/FilePreview.vue.d.ts.map +1 -0
- package/dist/components/FilePreviewPortal.vue.d.ts +15 -0
- package/dist/components/FilePreviewPortal.vue.d.ts.map +1 -0
- package/dist/components/FilePreviewThumbnail.vue.d.ts +19 -0
- package/dist/components/FilePreviewThumbnail.vue.d.ts.map +1 -0
- package/dist/components/FileRow.vue.d.ts +17 -0
- package/dist/components/FileRow.vue.d.ts.map +1 -0
- package/dist/components/GoogleDriveUploader.vue.d.ts +3 -0
- package/dist/components/GoogleDriveUploader.vue.d.ts.map +1 -0
- package/dist/components/Icon.d.ts +36 -0
- package/dist/components/Icon.d.ts.map +1 -0
- package/dist/components/Icons.d.ts +10 -0
- package/dist/components/Icons.d.ts.map +1 -0
- package/dist/components/ImageEditorStub.vue.d.ts +3 -0
- package/dist/components/ImageEditorStub.vue.d.ts.map +1 -0
- package/dist/components/OneDriveUploader.vue.d.ts +3 -0
- package/dist/components/OneDriveUploader.vue.d.ts.map +1 -0
- package/dist/components/ScreenCaptureUploader.vue.d.ts +3 -0
- package/dist/components/ScreenCaptureUploader.vue.d.ts.map +1 -0
- package/dist/components/ServerModeDriveUploader.vue.d.ts +9 -0
- package/dist/components/ServerModeDriveUploader.vue.d.ts.map +1 -0
- package/dist/components/SourceSelector.vue.d.ts +3 -0
- package/dist/components/SourceSelector.vue.d.ts.map +1 -0
- package/dist/components/SourceView.vue.d.ts +3 -0
- package/dist/components/SourceView.vue.d.ts.map +1 -0
- package/dist/components/UploaderPanel.vue.d.ts +3 -0
- package/dist/components/UploaderPanel.vue.d.ts.map +1 -0
- package/dist/components/UrlUploader.vue.d.ts +3 -0
- package/dist/components/UrlUploader.vue.d.ts.map +1 -0
- package/dist/components/shared/DriveAuthFallback.vue.d.ts +12 -0
- package/dist/components/shared/DriveAuthFallback.vue.d.ts.map +1 -0
- package/dist/components/shared/DriveBrowser.vue.d.ts +28 -0
- package/dist/components/shared/DriveBrowser.vue.d.ts.map +1 -0
- package/dist/components/shared/DriveBrowserHeader.vue.d.ts +13 -0
- package/dist/components/shared/DriveBrowserHeader.vue.d.ts.map +1 -0
- package/dist/components/shared/DriveBrowserIcon.vue.d.ts +7 -0
- package/dist/components/shared/DriveBrowserIcon.vue.d.ts.map +1 -0
- package/dist/components/shared/DriveBrowserItem.vue.d.ts +9 -0
- package/dist/components/shared/DriveBrowserItem.vue.d.ts.map +1 -0
- package/dist/components/shared/FileSuccessCheck.vue.d.ts +20 -0
- package/dist/components/shared/FileSuccessCheck.vue.d.ts.map +1 -0
- package/dist/components/shared/ProgressBar.vue.d.ts +11 -0
- package/dist/components/shared/ProgressBar.vue.d.ts.map +1 -0
- package/dist/components/shared/SourceViewContainer.vue.d.ts +18 -0
- package/dist/components/shared/SourceViewContainer.vue.d.ts.map +1 -0
- package/dist/components/shared/UploaderHeader.vue.d.ts +15 -0
- package/dist/components/shared/UploaderHeader.vue.d.ts.map +1 -0
- package/dist/composables/use-tiles-per-row.d.ts +10 -0
- package/dist/composables/use-tiles-per-row.d.ts.map +1 -0
- package/dist/composables/useBox.d.ts +28 -0
- package/dist/composables/useBox.d.ts.map +1 -0
- package/dist/composables/useCameraUploader.d.ts +25 -0
- package/dist/composables/useCameraUploader.d.ts.map +1 -0
- package/dist/composables/useDropbox.d.ts +28 -0
- package/dist/composables/useDropbox.d.ts.map +1 -0
- package/dist/composables/useFetchFileByUrl.d.ts +8 -0
- package/dist/composables/useFetchFileByUrl.d.ts.map +1 -0
- package/dist/composables/useGoogleDrive.d.ts +28 -0
- package/dist/composables/useGoogleDrive.d.ts.map +1 -0
- package/dist/composables/useOneDrive.d.ts +29 -0
- package/dist/composables/useOneDrive.d.ts.map +1 -0
- package/dist/composables/useSSEProcessing.d.ts +19 -0
- package/dist/composables/useSSEProcessing.d.ts.map +1 -0
- package/dist/composables/useServerModeDrive.d.ts +17 -0
- package/dist/composables/useServerModeDrive.d.ts.map +1 -0
- package/dist/composables/useSourceSelector.d.ts +13 -0
- package/dist/composables/useSourceSelector.d.ts.map +1 -0
- package/dist/composables/useUploaderController.d.ts +4 -0
- package/dist/composables/useUploaderController.d.ts.map +1 -0
- package/dist/composables/useUploaderPanel.d.ts +13 -0
- package/dist/composables/useUploaderPanel.d.ts.map +1 -0
- package/dist/context/source-view-header-extra.d.ts +4 -0
- package/dist/context/source-view-header-extra.d.ts.map +1 -0
- package/dist/context/uploader-context.d.ts +95 -0
- package/dist/context/uploader-context.d.ts.map +1 -0
- package/dist/index.cjs +4405 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4405 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/constants.d.ts +11 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/view-mode.d.ts +24 -0
- package/dist/lib/view-mode.d.ts.map +1 -0
- package/dist/shared/types.d.ts +15 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/styles.d.ts +4 -0
- package/dist/tailwind-prefixed.css +2508 -0
- package/dist/upup-uploader.vue.d.ts +18 -0
- package/dist/upup-uploader.vue.d.ts.map +1 -0
- package/dist/use-upup-upload.d.ts +38 -0
- package/dist/use-upup-upload.d.ts.map +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DriveAuthFallback_default,
|
|
3
|
+
DriveBrowser_default,
|
|
4
|
+
ServerModeDriveUploader_default
|
|
5
|
+
} from "./chunk-PPPFIWFQ.js";
|
|
6
|
+
import "./chunk-RZ7RTSRZ.js";
|
|
7
|
+
import "./chunk-M6AHIQ3M.js";
|
|
8
|
+
import {
|
|
9
|
+
export_helper_default,
|
|
10
|
+
useUploaderFiles,
|
|
11
|
+
useUploaderRuntime,
|
|
12
|
+
useUploaderSource
|
|
13
|
+
} from "./chunk-X6FZTCNT.js";
|
|
14
|
+
|
|
15
|
+
// src/components/BoxUploader.vue
|
|
16
|
+
import { defineComponent as _defineComponent2 } from "vue";
|
|
17
|
+
|
|
18
|
+
// src/components/ClientBoxUploader.vue
|
|
19
|
+
import { defineComponent as _defineComponent } from "vue";
|
|
20
|
+
|
|
21
|
+
// src/composables/useBox.ts
|
|
22
|
+
import {
|
|
23
|
+
shallowRef,
|
|
24
|
+
computed,
|
|
25
|
+
onMounted,
|
|
26
|
+
onUnmounted
|
|
27
|
+
} from "vue";
|
|
28
|
+
import { BOX_DESCRIPTOR } from "@useupup/core";
|
|
29
|
+
import {
|
|
30
|
+
DriveBrowserController
|
|
31
|
+
} from "@useupup/core/internal";
|
|
32
|
+
function useBox() {
|
|
33
|
+
const { core } = useUploaderRuntime();
|
|
34
|
+
const { setActiveSource } = useUploaderSource();
|
|
35
|
+
const { setFiles } = useUploaderFiles();
|
|
36
|
+
if (!core) {
|
|
37
|
+
throw new Error("useBox must be used inside <UpupUploader />");
|
|
38
|
+
}
|
|
39
|
+
const controller = new DriveBrowserController(core, BOX_DESCRIPTOR, {
|
|
40
|
+
onFilesSelected: (files) => {
|
|
41
|
+
setFiles(files);
|
|
42
|
+
},
|
|
43
|
+
onClose: () => {
|
|
44
|
+
setActiveSource(void 0);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const state = shallowRef(controller.getSnapshot());
|
|
48
|
+
let unsub = null;
|
|
49
|
+
onMounted(() => {
|
|
50
|
+
unsub = controller.subscribe(() => {
|
|
51
|
+
state.value = controller.getSnapshot();
|
|
52
|
+
});
|
|
53
|
+
controller.init();
|
|
54
|
+
});
|
|
55
|
+
onUnmounted(() => {
|
|
56
|
+
controller.destroy();
|
|
57
|
+
unsub == null ? void 0 : unsub();
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
user: computed(() => state.value.user),
|
|
61
|
+
boxFiles: computed(() => state.value.folder),
|
|
62
|
+
logout: () => {
|
|
63
|
+
controller.signOut();
|
|
64
|
+
},
|
|
65
|
+
authenticate: () => {
|
|
66
|
+
controller.signIn();
|
|
67
|
+
},
|
|
68
|
+
token: computed(
|
|
69
|
+
() => state.value.isAuthenticated ? "active" : void 0
|
|
70
|
+
),
|
|
71
|
+
isAuthenticated: computed(() => state.value.isAuthenticated),
|
|
72
|
+
isLoading: computed(() => state.value.isLoading),
|
|
73
|
+
path: computed(() => state.value.path),
|
|
74
|
+
setPath: (newPath) => {
|
|
75
|
+
controller.setPath(newPath);
|
|
76
|
+
},
|
|
77
|
+
handleClick: (file) => {
|
|
78
|
+
controller.handleClick(file);
|
|
79
|
+
},
|
|
80
|
+
selectedFiles: computed(() => state.value.selectedFiles),
|
|
81
|
+
showLoader: computed(() => state.value.showLoader),
|
|
82
|
+
handleSubmit: () => controller.handleSubmit(),
|
|
83
|
+
handleCancelDownload: () => {
|
|
84
|
+
controller.handleCancelDownload();
|
|
85
|
+
},
|
|
86
|
+
onSelectCurrentFolder: () => controller.onSelectCurrentFolder(),
|
|
87
|
+
isClickLoading: computed(() => state.value.isClickLoading),
|
|
88
|
+
error: computed(() => state.value.error),
|
|
89
|
+
hasMore: computed(() => state.value.hasMore),
|
|
90
|
+
isLoadingMore: computed(() => state.value.isLoadingMore),
|
|
91
|
+
loadMore: () => controller.loadMore()
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// src/components/ClientBoxUploader.vue
|
|
96
|
+
import { openBlock as _openBlock, createBlock as _createBlock } from "vue";
|
|
97
|
+
var _sfc_main = /* @__PURE__ */ _defineComponent({
|
|
98
|
+
__name: "ClientBoxUploader",
|
|
99
|
+
setup(__props, { expose: __expose }) {
|
|
100
|
+
__expose();
|
|
101
|
+
const { user, boxFiles: driveFiles, logout, token, isAuthenticated, authenticate, isLoading, path, setPath, isClickLoading, handleClick, selectedFiles, showLoader, handleSubmit, handleCancelDownload, onSelectCurrentFolder, error, hasMore, isLoadingMore, loadMore } = useBox();
|
|
102
|
+
async function handleSignOut() {
|
|
103
|
+
logout();
|
|
104
|
+
}
|
|
105
|
+
const __returned__ = {
|
|
106
|
+
user,
|
|
107
|
+
driveFiles,
|
|
108
|
+
logout,
|
|
109
|
+
token,
|
|
110
|
+
isAuthenticated,
|
|
111
|
+
authenticate,
|
|
112
|
+
isLoading,
|
|
113
|
+
path,
|
|
114
|
+
setPath,
|
|
115
|
+
isClickLoading,
|
|
116
|
+
handleClick,
|
|
117
|
+
selectedFiles,
|
|
118
|
+
showLoader,
|
|
119
|
+
handleSubmit,
|
|
120
|
+
handleCancelDownload,
|
|
121
|
+
onSelectCurrentFolder,
|
|
122
|
+
error,
|
|
123
|
+
hasMore,
|
|
124
|
+
isLoadingMore,
|
|
125
|
+
loadMore,
|
|
126
|
+
handleSignOut,
|
|
127
|
+
DriveAuthFallback: DriveAuthFallback_default,
|
|
128
|
+
DriveBrowser: DriveBrowser_default
|
|
129
|
+
};
|
|
130
|
+
Object.defineProperty(__returned__, "__isScriptSetup", {
|
|
131
|
+
enumerable: false,
|
|
132
|
+
value: true
|
|
133
|
+
});
|
|
134
|
+
return __returned__;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
138
|
+
return !$setup.isAuthenticated && !$setup.token && !$setup.isLoading ? (_openBlock(), _createBlock($setup["DriveAuthFallback"], {
|
|
139
|
+
key: 0,
|
|
140
|
+
"provider-name": "Box",
|
|
141
|
+
"on-retry": $setup.authenticate,
|
|
142
|
+
"data-upup-slot": "box-uploader"
|
|
143
|
+
}, null, 8, ["on-retry"])) : (_openBlock(), _createBlock($setup["DriveBrowser"], {
|
|
144
|
+
key: 1,
|
|
145
|
+
"drive-files": $setup.driveFiles,
|
|
146
|
+
user: $setup.user,
|
|
147
|
+
"handle-sign-out": $setup.handleSignOut,
|
|
148
|
+
"data-upup-slot": "box-uploader",
|
|
149
|
+
path: $setup.path,
|
|
150
|
+
"set-path": $setup.setPath,
|
|
151
|
+
"is-click-loading": $setup.isClickLoading,
|
|
152
|
+
"handle-click": $setup.handleClick,
|
|
153
|
+
"selected-files": $setup.selectedFiles,
|
|
154
|
+
"show-loader": $setup.showLoader,
|
|
155
|
+
"handle-submit": $setup.handleSubmit,
|
|
156
|
+
"handle-cancel-download": $setup.handleCancelDownload,
|
|
157
|
+
"on-select-current-folder": $setup.onSelectCurrentFolder,
|
|
158
|
+
error: $setup.error,
|
|
159
|
+
"has-more": $setup.hasMore,
|
|
160
|
+
"is-loading-more": $setup.isLoadingMore,
|
|
161
|
+
"load-more": $setup.loadMore
|
|
162
|
+
}, null, 8, [
|
|
163
|
+
"drive-files",
|
|
164
|
+
"user",
|
|
165
|
+
"path",
|
|
166
|
+
"set-path",
|
|
167
|
+
"is-click-loading",
|
|
168
|
+
"handle-click",
|
|
169
|
+
"selected-files",
|
|
170
|
+
"show-loader",
|
|
171
|
+
"handle-submit",
|
|
172
|
+
"handle-cancel-download",
|
|
173
|
+
"on-select-current-folder",
|
|
174
|
+
"error",
|
|
175
|
+
"has-more",
|
|
176
|
+
"is-loading-more",
|
|
177
|
+
"load-more"
|
|
178
|
+
]));
|
|
179
|
+
}
|
|
180
|
+
var ClientBoxUploader_default = /* @__PURE__ */ export_helper_default(_sfc_main, [["render", _sfc_render], ["__file", "C:\\Users\\amind\\OneDrive\\Desktop\\Projects\\INTERNAL\\upup\\packages\\vue\\src\\components\\ClientBoxUploader.vue"]]);
|
|
181
|
+
|
|
182
|
+
// src/components/BoxUploader.vue
|
|
183
|
+
import { openBlock as _openBlock2, createBlock as _createBlock2 } from "vue";
|
|
184
|
+
var _sfc_main2 = /* @__PURE__ */ _defineComponent2({
|
|
185
|
+
__name: "BoxUploader",
|
|
186
|
+
setup(__props, { expose: __expose }) {
|
|
187
|
+
__expose();
|
|
188
|
+
const { mode } = useUploaderRuntime();
|
|
189
|
+
const { setActiveSource } = useUploaderSource();
|
|
190
|
+
const __returned__ = {
|
|
191
|
+
mode,
|
|
192
|
+
setActiveSource,
|
|
193
|
+
ClientBoxUploader: ClientBoxUploader_default,
|
|
194
|
+
ServerModeDriveUploader: ServerModeDriveUploader_default
|
|
195
|
+
};
|
|
196
|
+
Object.defineProperty(__returned__, "__isScriptSetup", {
|
|
197
|
+
enumerable: false,
|
|
198
|
+
value: true
|
|
199
|
+
});
|
|
200
|
+
return __returned__;
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
function _sfc_render2(_ctx, _cache, $props, $setup, $data, $options) {
|
|
204
|
+
return $setup.mode === "server" ? (_openBlock2(), _createBlock2($setup["ServerModeDriveUploader"], {
|
|
205
|
+
key: 0,
|
|
206
|
+
provider: "box",
|
|
207
|
+
"on-back": () => $setup.setActiveSource(void 0)
|
|
208
|
+
}, null, 8, ["on-back"])) : (_openBlock2(), _createBlock2($setup["ClientBoxUploader"], { key: 1 }));
|
|
209
|
+
}
|
|
210
|
+
var BoxUploader_default = /* @__PURE__ */ export_helper_default(_sfc_main2, [["render", _sfc_render2], ["__file", "C:\\Users\\amind\\OneDrive\\Desktop\\Projects\\INTERNAL\\upup\\packages\\vue\\src\\components\\BoxUploader.vue"]]);
|
|
211
|
+
export {
|
|
212
|
+
BoxUploader_default as default
|
|
213
|
+
};
|
|
214
|
+
//# sourceMappingURL=BoxUploader-TIDCYWMC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/composables/useBox.ts","../src/components/ClientBoxUploader.vue","../src/components/ClientBoxUploader.vue","../src/components/BoxUploader.vue","../src/components/BoxUploader.vue"],"sourcesContent":["import {\r\n shallowRef,\r\n computed,\r\n onMounted,\r\n onUnmounted,\r\n type ComputedRef,\r\n} from 'vue'\r\nimport { BOX_DESCRIPTOR, type DriveFile, type DriveFolder } 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/uploader-context'\r\n\r\ninterface UseBoxReturn {\r\n user: ComputedRef<DriveBrowserState['user']>\r\n boxFiles: ComputedRef<DriveBrowserState['folder']>\r\n logout: () => void\r\n authenticate: () => void\r\n token: ComputedRef<'active' | undefined>\r\n isAuthenticated: ComputedRef<DriveBrowserState['isAuthenticated']>\r\n isLoading: ComputedRef<DriveBrowserState['isLoading']>\r\n path: ComputedRef<DriveBrowserState['path']>\r\n setPath: (newPath: DriveFolder[]) => void\r\n handleClick: (file: DriveFile) => void\r\n selectedFiles: ComputedRef<DriveBrowserState['selectedFiles']>\r\n showLoader: ComputedRef<DriveBrowserState['showLoader']>\r\n handleSubmit: () => Promise<void>\r\n handleCancelDownload: () => void\r\n onSelectCurrentFolder: () => Promise<void>\r\n isClickLoading: ComputedRef<DriveBrowserState['isClickLoading']>\r\n error: ComputedRef<DriveBrowserState['error']>\r\n hasMore: ComputedRef<DriveBrowserState['hasMore']>\r\n isLoadingMore: ComputedRef<DriveBrowserState['isLoadingMore']>\r\n loadMore: () => Promise<void>\r\n}\r\n\r\nexport function useBox(): UseBoxReturn {\r\n const { core } = useUploaderRuntime()\r\n const { setActiveSource } = useUploaderSource()\r\n const { setFiles } = useUploaderFiles()\r\n\r\n if (!core) {\r\n throw new Error('useBox must be used inside <UpupUploader />')\r\n }\r\n\r\n const controller = new DriveBrowserController(core, BOX_DESCRIPTOR, {\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 const state = shallowRef(controller.getSnapshot())\r\n let unsub: (() => void) | null = null\r\n\r\n onMounted(() => {\r\n unsub = controller.subscribe(() => {\r\n state.value = controller.getSnapshot()\r\n })\r\n controller.init()\r\n })\r\n onUnmounted(() => {\r\n controller.destroy()\r\n unsub?.()\r\n })\r\n\r\n return {\r\n user: computed(() => state.value.user),\r\n boxFiles: computed(() => state.value.folder),\r\n logout: () => {\r\n controller.signOut()\r\n },\r\n authenticate: () => {\r\n controller.signIn()\r\n },\r\n token: computed(() =>\r\n state.value.isAuthenticated ? 'active' : undefined,\r\n ),\r\n isAuthenticated: computed(() => state.value.isAuthenticated),\r\n isLoading: computed(() => state.value.isLoading),\r\n path: computed(() => state.value.path),\r\n setPath: (newPath: DriveFolder[]) => {\r\n controller.setPath(newPath)\r\n },\r\n handleClick: (file: DriveFile) => {\r\n controller.handleClick(file)\r\n },\r\n selectedFiles: computed(() => state.value.selectedFiles),\r\n showLoader: computed(() => state.value.showLoader),\r\n handleSubmit: () => controller.handleSubmit(),\r\n handleCancelDownload: () => {\r\n controller.handleCancelDownload()\r\n },\r\n onSelectCurrentFolder: () => controller.onSelectCurrentFolder(),\r\n isClickLoading: computed(() => state.value.isClickLoading),\r\n error: computed(() => state.value.error),\r\n hasMore: computed(() => state.value.hasMore),\r\n isLoadingMore: computed(() => state.value.isLoadingMore),\r\n loadMore: () => controller.loadMore(),\r\n }\r\n}\r\n\r\nexport default useBox\r\n","<script setup lang=\"ts\">\r\nimport { useBox } from '../composables/useBox'\r\nimport DriveAuthFallback from './shared/DriveAuthFallback.vue'\r\nimport DriveBrowser from './shared/DriveBrowser.vue'\r\n\r\nconst {\r\n user,\r\n boxFiles: driveFiles,\r\n logout,\r\n token,\r\n isAuthenticated,\r\n authenticate,\r\n isLoading,\r\n path,\r\n setPath,\r\n isClickLoading,\r\n handleClick,\r\n selectedFiles,\r\n showLoader,\r\n handleSubmit,\r\n handleCancelDownload,\r\n onSelectCurrentFolder,\r\n error,\r\n hasMore,\r\n isLoadingMore,\r\n loadMore,\r\n} = useBox()\r\n\r\nasync function handleSignOut() {\r\n logout()\r\n}\r\n</script>\r\n\r\n<template>\r\n <DriveAuthFallback\r\n v-if=\"!isAuthenticated && !token && !isLoading\"\r\n provider-name=\"Box\"\r\n :on-retry=\"authenticate\"\r\n data-upup-slot=\"box-uploader\"\r\n />\r\n <DriveBrowser\r\n v-else\r\n :drive-files=\"driveFiles\"\r\n :user=\"user\"\r\n :handle-sign-out=\"handleSignOut\"\r\n data-upup-slot=\"box-uploader\"\r\n :path=\"path\"\r\n :set-path=\"setPath\"\r\n :is-click-loading=\"isClickLoading\"\r\n :handle-click=\"handleClick\"\r\n :selected-files=\"selectedFiles\"\r\n :show-loader=\"showLoader\"\r\n :handle-submit=\"handleSubmit\"\r\n :handle-cancel-download=\"handleCancelDownload\"\r\n :on-select-current-folder=\"onSelectCurrentFolder\"\r\n :error=\"error\"\r\n :has-more=\"hasMore\"\r\n :is-loading-more=\"isLoadingMore\"\r\n :load-more=\"loadMore\"\r\n />\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport { useBox } from '../composables/useBox'\r\nimport DriveAuthFallback from './shared/DriveAuthFallback.vue'\r\nimport DriveBrowser from './shared/DriveBrowser.vue'\r\n\r\nconst {\r\n user,\r\n boxFiles: driveFiles,\r\n logout,\r\n token,\r\n isAuthenticated,\r\n authenticate,\r\n isLoading,\r\n path,\r\n setPath,\r\n isClickLoading,\r\n handleClick,\r\n selectedFiles,\r\n showLoader,\r\n handleSubmit,\r\n handleCancelDownload,\r\n onSelectCurrentFolder,\r\n error,\r\n hasMore,\r\n isLoadingMore,\r\n loadMore,\r\n} = useBox()\r\n\r\nasync function handleSignOut() {\r\n logout()\r\n}\r\n</script>\r\n\r\n<template>\r\n <DriveAuthFallback\r\n v-if=\"!isAuthenticated && !token && !isLoading\"\r\n provider-name=\"Box\"\r\n :on-retry=\"authenticate\"\r\n data-upup-slot=\"box-uploader\"\r\n />\r\n <DriveBrowser\r\n v-else\r\n :drive-files=\"driveFiles\"\r\n :user=\"user\"\r\n :handle-sign-out=\"handleSignOut\"\r\n data-upup-slot=\"box-uploader\"\r\n :path=\"path\"\r\n :set-path=\"setPath\"\r\n :is-click-loading=\"isClickLoading\"\r\n :handle-click=\"handleClick\"\r\n :selected-files=\"selectedFiles\"\r\n :show-loader=\"showLoader\"\r\n :handle-submit=\"handleSubmit\"\r\n :handle-cancel-download=\"handleCancelDownload\"\r\n :on-select-current-folder=\"onSelectCurrentFolder\"\r\n :error=\"error\"\r\n :has-more=\"hasMore\"\r\n :is-loading-more=\"isLoadingMore\"\r\n :load-more=\"loadMore\"\r\n />\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport { useUploaderRuntime, useUploaderSource } from '../context/uploader-context'\r\nimport ClientBoxUploader from './ClientBoxUploader.vue'\r\nimport ServerModeDriveUploader from './ServerModeDriveUploader.vue'\r\n\r\nconst { mode } = useUploaderRuntime()\r\nconst { setActiveSource } = useUploaderSource()\r\n</script>\r\n\r\n<template>\r\n <ServerModeDriveUploader\r\n v-if=\"mode === 'server'\"\r\n provider=\"box\"\r\n :on-back=\"() => setActiveSource(undefined)\"\r\n />\r\n <ClientBoxUploader v-else />\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport { useUploaderRuntime, useUploaderSource } from '../context/uploader-context'\r\nimport ClientBoxUploader from './ClientBoxUploader.vue'\r\nimport ServerModeDriveUploader from './ServerModeDriveUploader.vue'\r\n\r\nconst { mode } = useUploaderRuntime()\r\nconst { setActiveSource } = useUploaderSource()\r\n</script>\r\n\r\n<template>\r\n <ServerModeDriveUploader\r\n v-if=\"mode === 'server'\"\r\n provider=\"box\"\r\n :on-back=\"() => setActiveSource(undefined)\"\r\n />\r\n <ClientBoxUploader v-else />\r\n</template>\r\n"],"mappings":"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","names":["_openBlock","_createBlock"]}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SourceViewContainer_default
|
|
3
|
+
} from "./chunk-M6AHIQ3M.js";
|
|
4
|
+
import {
|
|
5
|
+
export_helper_default,
|
|
6
|
+
useUploaderFiles,
|
|
7
|
+
useUploaderI18n,
|
|
8
|
+
useUploaderOptions,
|
|
9
|
+
useUploaderRuntime,
|
|
10
|
+
useUploaderSource,
|
|
11
|
+
useUploaderTheme
|
|
12
|
+
} from "./chunk-X6FZTCNT.js";
|
|
13
|
+
|
|
14
|
+
// src/components/CameraUploader.vue
|
|
15
|
+
import { defineComponent as _defineComponent } from "vue";
|
|
16
|
+
import { onMounted, watch } from "vue";
|
|
17
|
+
import { formatUiMessage as t } from "@useupup/core";
|
|
18
|
+
import { cn } from "@useupup/core/internal";
|
|
19
|
+
|
|
20
|
+
// src/composables/useCameraUploader.ts
|
|
21
|
+
import { computed, onUnmounted, ref } from "vue";
|
|
22
|
+
function useCameraUploader() {
|
|
23
|
+
const { core } = useUploaderRuntime();
|
|
24
|
+
const { setFiles } = useUploaderFiles();
|
|
25
|
+
const { setActiveSource } = useUploaderSource();
|
|
26
|
+
const { translations } = useUploaderI18n();
|
|
27
|
+
const props = useUploaderOptions();
|
|
28
|
+
const theme = useUploaderTheme();
|
|
29
|
+
const videoRef = ref(null);
|
|
30
|
+
const capturedUrl = ref("");
|
|
31
|
+
const facingMode = ref("environment" /* Environment */);
|
|
32
|
+
const stream = ref(null);
|
|
33
|
+
const newCameraSide = computed(
|
|
34
|
+
() => facingMode.value === "environment" /* Environment */ ? "front" : "back"
|
|
35
|
+
);
|
|
36
|
+
async function startCamera() {
|
|
37
|
+
try {
|
|
38
|
+
if (stream.value) {
|
|
39
|
+
stream.value.getTracks().forEach((t2) => {
|
|
40
|
+
t2.stop();
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const mediaStream = await navigator.mediaDevices.getUserMedia({
|
|
44
|
+
video: { facingMode: facingMode.value }
|
|
45
|
+
});
|
|
46
|
+
stream.value = mediaStream;
|
|
47
|
+
if (videoRef.value) {
|
|
48
|
+
videoRef.value.srcObject = mediaStream;
|
|
49
|
+
await videoRef.value.play();
|
|
50
|
+
}
|
|
51
|
+
} catch {
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function stopCamera() {
|
|
55
|
+
if (stream.value) {
|
|
56
|
+
stream.value.getTracks().forEach((t2) => {
|
|
57
|
+
t2.stop();
|
|
58
|
+
});
|
|
59
|
+
stream.value = null;
|
|
60
|
+
}
|
|
61
|
+
if (videoRef.value) {
|
|
62
|
+
videoRef.value.srcObject = null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function capture() {
|
|
66
|
+
if (!videoRef.value) return;
|
|
67
|
+
const canvas = document.createElement("canvas");
|
|
68
|
+
canvas.width = videoRef.value.videoWidth;
|
|
69
|
+
canvas.height = videoRef.value.videoHeight;
|
|
70
|
+
const ctx = canvas.getContext("2d");
|
|
71
|
+
if (!ctx) return;
|
|
72
|
+
ctx.drawImage(videoRef.value, 0, 0);
|
|
73
|
+
const dataUrl = canvas.toDataURL("image/jpeg");
|
|
74
|
+
capturedUrl.value = dataUrl;
|
|
75
|
+
core == null ? void 0 : core.emit("camera-capture", { dataUrl });
|
|
76
|
+
}
|
|
77
|
+
function clearUrl() {
|
|
78
|
+
capturedUrl.value = "";
|
|
79
|
+
}
|
|
80
|
+
async function handleFetchImage() {
|
|
81
|
+
if (!capturedUrl.value) return;
|
|
82
|
+
const response = await fetch(capturedUrl.value);
|
|
83
|
+
const blob = await response.blob();
|
|
84
|
+
const file = new File([blob], `capture-${Date.now()}.jpg`, {
|
|
85
|
+
type: "image/jpeg"
|
|
86
|
+
});
|
|
87
|
+
setFiles([file]);
|
|
88
|
+
capturedUrl.value = "";
|
|
89
|
+
setActiveSource(void 0);
|
|
90
|
+
core == null ? void 0 : core.emit("camera-confirm", { file });
|
|
91
|
+
}
|
|
92
|
+
function handleCameraSwitch() {
|
|
93
|
+
facingMode.value = facingMode.value === "environment" /* Environment */ ? "user" /* User */ : "environment" /* Environment */;
|
|
94
|
+
}
|
|
95
|
+
onUnmounted(() => {
|
|
96
|
+
stopCamera();
|
|
97
|
+
});
|
|
98
|
+
return {
|
|
99
|
+
videoRef,
|
|
100
|
+
capturedUrl,
|
|
101
|
+
facingMode,
|
|
102
|
+
newCameraSide,
|
|
103
|
+
startCamera,
|
|
104
|
+
stopCamera,
|
|
105
|
+
capture,
|
|
106
|
+
clearUrl,
|
|
107
|
+
handleFetchImage,
|
|
108
|
+
handleCameraSwitch,
|
|
109
|
+
translations,
|
|
110
|
+
props,
|
|
111
|
+
theme
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// src/components/CameraUploader.vue
|
|
116
|
+
import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, Fragment as _Fragment, withCtx as _withCtx } from "vue";
|
|
117
|
+
var _sfc_main = /* @__PURE__ */ _defineComponent({
|
|
118
|
+
__name: "CameraUploader",
|
|
119
|
+
setup(__props, { expose: __expose }) {
|
|
120
|
+
__expose();
|
|
121
|
+
const { videoRef, capturedUrl, facingMode, newCameraSide, startCamera, capture, clearUrl, handleFetchImage, handleCameraSwitch, translations: tr, props: { icons: { CameraCaptureIcon, CameraDeleteIcon, CameraRotateIcon } }, theme: { isDark: dark, slotOverrides: slotClasses } } = useCameraUploader();
|
|
122
|
+
onMounted(() => {
|
|
123
|
+
startCamera();
|
|
124
|
+
});
|
|
125
|
+
watch(facingMode, () => {
|
|
126
|
+
if (!capturedUrl.value) startCamera();
|
|
127
|
+
});
|
|
128
|
+
const __returned__ = {
|
|
129
|
+
videoRef,
|
|
130
|
+
capturedUrl,
|
|
131
|
+
facingMode,
|
|
132
|
+
newCameraSide,
|
|
133
|
+
startCamera,
|
|
134
|
+
capture,
|
|
135
|
+
clearUrl,
|
|
136
|
+
handleFetchImage,
|
|
137
|
+
handleCameraSwitch,
|
|
138
|
+
tr,
|
|
139
|
+
CameraCaptureIcon,
|
|
140
|
+
CameraDeleteIcon,
|
|
141
|
+
CameraRotateIcon,
|
|
142
|
+
dark,
|
|
143
|
+
slotClasses,
|
|
144
|
+
get t() {
|
|
145
|
+
return t;
|
|
146
|
+
},
|
|
147
|
+
get cn() {
|
|
148
|
+
return cn;
|
|
149
|
+
},
|
|
150
|
+
SourceViewContainer: SourceViewContainer_default
|
|
151
|
+
};
|
|
152
|
+
Object.defineProperty(__returned__, "__isScriptSetup", {
|
|
153
|
+
enumerable: false,
|
|
154
|
+
value: true
|
|
155
|
+
});
|
|
156
|
+
return __returned__;
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
var _hoisted_1 = {
|
|
160
|
+
"data-testid": "upup-camera-uploader",
|
|
161
|
+
class: "upup-flex upup-h-full upup-w-full upup-flex-col upup-justify-center upup-overflow-hidden upup-px-3 upup-py-2"
|
|
162
|
+
};
|
|
163
|
+
var _hoisted_2 = { class: "upup-flex upup-min-h-0 upup-flex-1 upup-items-center upup-justify-center upup-pt-2" };
|
|
164
|
+
var _hoisted_3 = {
|
|
165
|
+
key: 1,
|
|
166
|
+
ref: "videoRef",
|
|
167
|
+
autoplay: "",
|
|
168
|
+
muted: "",
|
|
169
|
+
playsinline: "",
|
|
170
|
+
class: "upup-aspect-video upup-max-h-full upup-max-w-full upup-rounded-xl upup-object-contain"
|
|
171
|
+
};
|
|
172
|
+
var _hoisted_4 = { class: "upup-flex upup-shrink-0 upup-gap-4" };
|
|
173
|
+
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
174
|
+
return _openBlock(), _createBlock($setup["SourceViewContainer"], { "data-upup-slot": "camera-uploader" }, {
|
|
175
|
+
default: _withCtx(() => [_createElementVNode("div", _hoisted_1, [_createElementVNode("div", _hoisted_2, [!!$setup.capturedUrl ? (_openBlock(), _createElementBlock(
|
|
176
|
+
"div",
|
|
177
|
+
{
|
|
178
|
+
key: 0,
|
|
179
|
+
class: _normalizeClass($setup.cn("upup-relative upup-aspect-video upup-max-h-full upup-max-w-full upup-bg-black/[0.025] upup-bg-contain upup-bg-center upup-bg-no-repeat upup-shadow-xl", { "upup-bg-white/5 dark:upup-bg-white/5": $setup.dark }, $setup.slotClasses.cameraPreviewContainer)),
|
|
180
|
+
style: _normalizeStyle({ backgroundImage: `url(${$setup.capturedUrl})` })
|
|
181
|
+
},
|
|
182
|
+
[_createElementVNode(
|
|
183
|
+
"button",
|
|
184
|
+
{
|
|
185
|
+
onClick: _cache[0] || (_cache[0] = (...args) => $setup.clearUrl && $setup.clearUrl(...args)),
|
|
186
|
+
class: _normalizeClass($setup.cn("upup-absolute upup--right-2 upup--top-2 upup-z-10 upup-rounded-full upup-bg-[#272727] upup-p-1 upup-text-xl upup-text-[#f5f5f5]", $setup.slotClasses.cameraDeleteButton)),
|
|
187
|
+
type: "button"
|
|
188
|
+
},
|
|
189
|
+
[(_openBlock(), _createBlock(_resolveDynamicComponent($setup.CameraDeleteIcon)))],
|
|
190
|
+
2
|
|
191
|
+
/* CLASS */
|
|
192
|
+
)],
|
|
193
|
+
6
|
|
194
|
+
/* CLASS, STYLE */
|
|
195
|
+
)) : _createCommentVNode("v-if", true), !$setup.capturedUrl ? (_openBlock(), _createElementBlock(
|
|
196
|
+
"video",
|
|
197
|
+
_hoisted_3,
|
|
198
|
+
null,
|
|
199
|
+
512
|
|
200
|
+
/* NEED_PATCH */
|
|
201
|
+
)) : _createCommentVNode("v-if", true)]), _createElementVNode("div", _hoisted_4, [!$setup.capturedUrl ? (_openBlock(), _createElementBlock(
|
|
202
|
+
_Fragment,
|
|
203
|
+
{ key: 0 },
|
|
204
|
+
[_createElementVNode(
|
|
205
|
+
"button",
|
|
206
|
+
{
|
|
207
|
+
class: _normalizeClass($setup.cn("upup-mt-2 upup-flex upup-w-1/3 upup-flex-col upup-items-center upup-justify-center upup-rounded-md upup-bg-[#0ea5e9] upup-p-2 upup-text-white upup-transition-all upup-duration-300", { "upup-bg-[#38bdf8] dark:upup-bg-[#38bdf8]": $setup.dark }, $setup.slotClasses.cameraCaptureButton)),
|
|
208
|
+
onClick: _cache[1] || (_cache[1] = (...args) => $setup.capture && $setup.capture(...args)),
|
|
209
|
+
type: "button"
|
|
210
|
+
},
|
|
211
|
+
[_createElementVNode("span", null, [(_openBlock(), _createBlock(_resolveDynamicComponent($setup.CameraCaptureIcon)))]), _createElementVNode(
|
|
212
|
+
"span",
|
|
213
|
+
null,
|
|
214
|
+
_toDisplayString($setup.tr.capture),
|
|
215
|
+
1
|
|
216
|
+
/* TEXT */
|
|
217
|
+
)],
|
|
218
|
+
2
|
|
219
|
+
/* CLASS */
|
|
220
|
+
), _createElementVNode(
|
|
221
|
+
"button",
|
|
222
|
+
{
|
|
223
|
+
class: _normalizeClass($setup.cn("upup-mt-2 upup-flex upup-w-1/3 upup-flex-col upup-items-center upup-rounded-md upup-bg-gray-500 upup-p-2 upup-text-white upup-transition-all upup-duration-300 hover:upup-bg-gray-600", $setup.slotClasses.cameraRotateButton)),
|
|
224
|
+
onClick: _cache[2] || (_cache[2] = (...args) => $setup.handleCameraSwitch && $setup.handleCameraSwitch(...args)),
|
|
225
|
+
type: "button"
|
|
226
|
+
},
|
|
227
|
+
[_createElementVNode("span", null, [(_openBlock(), _createBlock(_resolveDynamicComponent($setup.CameraRotateIcon)))]), _createElementVNode(
|
|
228
|
+
"span",
|
|
229
|
+
null,
|
|
230
|
+
_toDisplayString($setup.t($setup.tr.switchToCamera, { side: $setup.newCameraSide === "front" ? $setup.tr.front : $setup.tr.back })),
|
|
231
|
+
1
|
|
232
|
+
/* TEXT */
|
|
233
|
+
)],
|
|
234
|
+
2
|
|
235
|
+
/* CLASS */
|
|
236
|
+
)],
|
|
237
|
+
64
|
|
238
|
+
/* STABLE_FRAGMENT */
|
|
239
|
+
)) : _createCommentVNode("v-if", true), !!$setup.capturedUrl ? (_openBlock(), _createElementBlock(
|
|
240
|
+
"button",
|
|
241
|
+
{
|
|
242
|
+
key: 1,
|
|
243
|
+
class: _normalizeClass($setup.cn("upup-mt-2 upup-w-full upup-rounded-md upup-bg-[#0ea5e9] upup-p-2 upup-text-white upup-transition-all upup-duration-300", { "upup-bg-[#38bdf8] dark:upup-bg-[#38bdf8]": $setup.dark }, $setup.slotClasses.cameraAddButton)),
|
|
244
|
+
onClick: _cache[3] || (_cache[3] = (...args) => $setup.handleFetchImage && $setup.handleFetchImage(...args)),
|
|
245
|
+
type: "button"
|
|
246
|
+
},
|
|
247
|
+
_toDisplayString($setup.tr.addImage),
|
|
248
|
+
3
|
|
249
|
+
/* TEXT, CLASS */
|
|
250
|
+
)) : _createCommentVNode("v-if", true)])])]),
|
|
251
|
+
_: 1
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
var CameraUploader_default = /* @__PURE__ */ export_helper_default(_sfc_main, [["render", _sfc_render], ["__file", "C:\\Users\\amind\\OneDrive\\Desktop\\Projects\\INTERNAL\\upup\\packages\\vue\\src\\components\\CameraUploader.vue"]]);
|
|
255
|
+
export {
|
|
256
|
+
CameraUploader_default as default
|
|
257
|
+
};
|
|
258
|
+
//# sourceMappingURL=CameraUploader-575RARRY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/CameraUploader.vue","../src/components/CameraUploader.vue","../src/composables/useCameraUploader.ts"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { onMounted, watch } from 'vue'\r\nimport { formatUiMessage as t } from '@useupup/core'\r\nimport { cn } from '@useupup/core/internal'\r\nimport useCameraUploader from '../composables/useCameraUploader'\r\nimport SourceViewContainer from './shared/SourceViewContainer.vue'\r\n\r\nconst {\r\n videoRef,\r\n capturedUrl,\r\n facingMode,\r\n newCameraSide,\r\n startCamera,\r\n capture,\r\n clearUrl,\r\n handleFetchImage,\r\n handleCameraSwitch,\r\n translations: tr,\r\n props: { icons: { CameraCaptureIcon, CameraDeleteIcon, CameraRotateIcon } },\r\n theme: { isDark: dark, slotOverrides: slotClasses },\r\n} = useCameraUploader()\r\n\r\nonMounted(() => {\r\n startCamera()\r\n})\r\n\r\n// Restart camera when facingMode changes\r\nwatch(facingMode, () => {\r\n if (!capturedUrl.value) startCamera()\r\n})\r\n</script>\r\n\r\n<template>\r\n <SourceViewContainer data-upup-slot=\"camera-uploader\">\r\n <div\r\n data-testid=\"upup-camera-uploader\"\r\n class=\"upup-flex upup-h-full upup-w-full upup-flex-col upup-justify-center upup-overflow-hidden upup-px-3 upup-py-2\"\r\n >\r\n <div class=\"upup-flex upup-min-h-0 upup-flex-1 upup-items-center upup-justify-center upup-pt-2\">\r\n <template v-if=\"!!capturedUrl\">\r\n <div\r\n :class=\"cn(\r\n 'upup-relative upup-aspect-video upup-max-h-full upup-max-w-full upup-bg-black/[0.025] upup-bg-contain upup-bg-center upup-bg-no-repeat upup-shadow-xl',\r\n {\r\n 'upup-bg-white/5 dark:upup-bg-white/5': dark,\r\n },\r\n slotClasses.cameraPreviewContainer,\r\n )\"\r\n :style=\"{ backgroundImage: `url(${capturedUrl})` }\"\r\n >\r\n <button\r\n @click=\"clearUrl\"\r\n :class=\"cn(\r\n 'upup-absolute upup--right-2 upup--top-2 upup-z-10 upup-rounded-full upup-bg-[#272727] upup-p-1 upup-text-xl upup-text-[#f5f5f5]',\r\n slotClasses.cameraDeleteButton,\r\n )\"\r\n type=\"button\"\r\n >\r\n <component :is=\"CameraDeleteIcon\" />\r\n </button>\r\n </div>\r\n </template>\r\n\r\n <template v-if=\"!capturedUrl\">\r\n <video\r\n ref=\"videoRef\"\r\n autoplay\r\n muted\r\n playsinline\r\n class=\"upup-aspect-video upup-max-h-full upup-max-w-full upup-rounded-xl upup-object-contain\"\r\n />\r\n </template>\r\n </div>\r\n\r\n <div class=\"upup-flex upup-shrink-0 upup-gap-4\">\r\n <template v-if=\"!capturedUrl\">\r\n <button\r\n :class=\"cn(\r\n 'upup-mt-2 upup-flex upup-w-1/3 upup-flex-col upup-items-center upup-justify-center upup-rounded-md upup-bg-[#0ea5e9] upup-p-2 upup-text-white upup-transition-all upup-duration-300',\r\n {\r\n 'upup-bg-[#38bdf8] dark:upup-bg-[#38bdf8]': dark,\r\n },\r\n slotClasses.cameraCaptureButton,\r\n )\"\r\n @click=\"capture\"\r\n type=\"button\"\r\n >\r\n <span><component :is=\"CameraCaptureIcon\" /></span>\r\n <span>{{ tr.capture }}</span>\r\n </button>\r\n <button\r\n :class=\"cn(\r\n 'upup-mt-2 upup-flex upup-w-1/3 upup-flex-col upup-items-center upup-rounded-md upup-bg-gray-500 upup-p-2 upup-text-white upup-transition-all upup-duration-300 hover:upup-bg-gray-600',\r\n slotClasses.cameraRotateButton,\r\n )\"\r\n @click=\"handleCameraSwitch\"\r\n type=\"button\"\r\n >\r\n <span><component :is=\"CameraRotateIcon\" /></span>\r\n <span>\r\n {{ t(tr.switchToCamera, {\r\n side: newCameraSide === 'front' ? tr.front : tr.back,\r\n }) }}\r\n </span>\r\n </button>\r\n </template>\r\n\r\n <template v-if=\"!!capturedUrl\">\r\n <button\r\n :class=\"cn(\r\n 'upup-mt-2 upup-w-full upup-rounded-md upup-bg-[#0ea5e9] upup-p-2 upup-text-white upup-transition-all upup-duration-300',\r\n {\r\n 'upup-bg-[#38bdf8] dark:upup-bg-[#38bdf8]': dark,\r\n },\r\n slotClasses.cameraAddButton,\r\n )\"\r\n @click=\"handleFetchImage\"\r\n type=\"button\"\r\n >\r\n {{ tr.addImage }}\r\n </button>\r\n </template>\r\n </div>\r\n </div>\r\n </SourceViewContainer>\r\n</template>\r\n","<script setup lang=\"ts\">\r\nimport { onMounted, watch } from 'vue'\r\nimport { formatUiMessage as t } from '@useupup/core'\r\nimport { cn } from '@useupup/core/internal'\r\nimport useCameraUploader from '../composables/useCameraUploader'\r\nimport SourceViewContainer from './shared/SourceViewContainer.vue'\r\n\r\nconst {\r\n videoRef,\r\n capturedUrl,\r\n facingMode,\r\n newCameraSide,\r\n startCamera,\r\n capture,\r\n clearUrl,\r\n handleFetchImage,\r\n handleCameraSwitch,\r\n translations: tr,\r\n props: { icons: { CameraCaptureIcon, CameraDeleteIcon, CameraRotateIcon } },\r\n theme: { isDark: dark, slotOverrides: slotClasses },\r\n} = useCameraUploader()\r\n\r\nonMounted(() => {\r\n startCamera()\r\n})\r\n\r\n// Restart camera when facingMode changes\r\nwatch(facingMode, () => {\r\n if (!capturedUrl.value) startCamera()\r\n})\r\n</script>\r\n\r\n<template>\r\n <SourceViewContainer data-upup-slot=\"camera-uploader\">\r\n <div\r\n data-testid=\"upup-camera-uploader\"\r\n class=\"upup-flex upup-h-full upup-w-full upup-flex-col upup-justify-center upup-overflow-hidden upup-px-3 upup-py-2\"\r\n >\r\n <div class=\"upup-flex upup-min-h-0 upup-flex-1 upup-items-center upup-justify-center upup-pt-2\">\r\n <template v-if=\"!!capturedUrl\">\r\n <div\r\n :class=\"cn(\r\n 'upup-relative upup-aspect-video upup-max-h-full upup-max-w-full upup-bg-black/[0.025] upup-bg-contain upup-bg-center upup-bg-no-repeat upup-shadow-xl',\r\n {\r\n 'upup-bg-white/5 dark:upup-bg-white/5': dark,\r\n },\r\n slotClasses.cameraPreviewContainer,\r\n )\"\r\n :style=\"{ backgroundImage: `url(${capturedUrl})` }\"\r\n >\r\n <button\r\n @click=\"clearUrl\"\r\n :class=\"cn(\r\n 'upup-absolute upup--right-2 upup--top-2 upup-z-10 upup-rounded-full upup-bg-[#272727] upup-p-1 upup-text-xl upup-text-[#f5f5f5]',\r\n slotClasses.cameraDeleteButton,\r\n )\"\r\n type=\"button\"\r\n >\r\n <component :is=\"CameraDeleteIcon\" />\r\n </button>\r\n </div>\r\n </template>\r\n\r\n <template v-if=\"!capturedUrl\">\r\n <video\r\n ref=\"videoRef\"\r\n autoplay\r\n muted\r\n playsinline\r\n class=\"upup-aspect-video upup-max-h-full upup-max-w-full upup-rounded-xl upup-object-contain\"\r\n />\r\n </template>\r\n </div>\r\n\r\n <div class=\"upup-flex upup-shrink-0 upup-gap-4\">\r\n <template v-if=\"!capturedUrl\">\r\n <button\r\n :class=\"cn(\r\n 'upup-mt-2 upup-flex upup-w-1/3 upup-flex-col upup-items-center upup-justify-center upup-rounded-md upup-bg-[#0ea5e9] upup-p-2 upup-text-white upup-transition-all upup-duration-300',\r\n {\r\n 'upup-bg-[#38bdf8] dark:upup-bg-[#38bdf8]': dark,\r\n },\r\n slotClasses.cameraCaptureButton,\r\n )\"\r\n @click=\"capture\"\r\n type=\"button\"\r\n >\r\n <span><component :is=\"CameraCaptureIcon\" /></span>\r\n <span>{{ tr.capture }}</span>\r\n </button>\r\n <button\r\n :class=\"cn(\r\n 'upup-mt-2 upup-flex upup-w-1/3 upup-flex-col upup-items-center upup-rounded-md upup-bg-gray-500 upup-p-2 upup-text-white upup-transition-all upup-duration-300 hover:upup-bg-gray-600',\r\n slotClasses.cameraRotateButton,\r\n )\"\r\n @click=\"handleCameraSwitch\"\r\n type=\"button\"\r\n >\r\n <span><component :is=\"CameraRotateIcon\" /></span>\r\n <span>\r\n {{ t(tr.switchToCamera, {\r\n side: newCameraSide === 'front' ? tr.front : tr.back,\r\n }) }}\r\n </span>\r\n </button>\r\n </template>\r\n\r\n <template v-if=\"!!capturedUrl\">\r\n <button\r\n :class=\"cn(\r\n 'upup-mt-2 upup-w-full upup-rounded-md upup-bg-[#0ea5e9] upup-p-2 upup-text-white upup-transition-all upup-duration-300',\r\n {\r\n 'upup-bg-[#38bdf8] dark:upup-bg-[#38bdf8]': dark,\r\n },\r\n slotClasses.cameraAddButton,\r\n )\"\r\n @click=\"handleFetchImage\"\r\n type=\"button\"\r\n >\r\n {{ tr.addImage }}\r\n </button>\r\n </template>\r\n </div>\r\n </div>\r\n </SourceViewContainer>\r\n</template>\r\n","import { computed, onUnmounted, ref, type Ref, type ComputedRef } from 'vue'\r\nimport type { Translations } from '@useupup/core'\r\nimport {\r\n useUploaderFiles,\r\n useUploaderI18n,\r\n useUploaderOptions,\r\n useUploaderRuntime,\r\n useUploaderSource,\r\n useUploaderTheme,\r\n} from '../context/uploader-context'\r\nimport type { ContextProps, ContextTheme } from '../context/uploader-context'\r\n\r\nexport enum FacingMode {\r\n Environment = 'environment',\r\n User = 'user',\r\n}\r\n\r\ninterface UseCameraUploaderReturn {\r\n videoRef: Ref<HTMLVideoElement | null>\r\n capturedUrl: Ref<string>\r\n facingMode: Ref<FacingMode>\r\n newCameraSide: ComputedRef<'front' | 'back'>\r\n startCamera: () => Promise<void>\r\n stopCamera: () => void\r\n capture: () => void\r\n clearUrl: () => void\r\n handleFetchImage: () => Promise<void>\r\n handleCameraSwitch: () => void\r\n translations: Translations\r\n props: ContextProps\r\n theme: ContextTheme\r\n}\r\n\r\nexport default function useCameraUploader(): UseCameraUploaderReturn {\r\n const { core } = useUploaderRuntime()\r\n const { setFiles } = useUploaderFiles()\r\n const { setActiveSource } = useUploaderSource()\r\n const { translations } = useUploaderI18n()\r\n const props = useUploaderOptions()\r\n const theme = useUploaderTheme()\r\n\r\n const videoRef = ref<HTMLVideoElement | null>(null)\r\n const capturedUrl = ref('')\r\n const facingMode = ref<FacingMode>(FacingMode.Environment)\r\n const stream = ref<MediaStream | null>(null)\r\n\r\n const newCameraSide = computed(() =>\r\n facingMode.value === FacingMode.Environment ? 'front' : 'back',\r\n )\r\n\r\n async function startCamera() {\r\n try {\r\n if (stream.value) {\r\n stream.value.getTracks().forEach(t => {\r\n t.stop()\r\n })\r\n }\r\n const mediaStream = await navigator.mediaDevices.getUserMedia({\r\n video: { facingMode: facingMode.value },\r\n })\r\n stream.value = mediaStream\r\n if (videoRef.value) {\r\n videoRef.value.srcObject = mediaStream\r\n await videoRef.value.play()\r\n }\r\n } catch {\r\n // upup-catch: camera unavailable or autoplay blocked — leave stream null\r\n }\r\n }\r\n\r\n function stopCamera() {\r\n if (stream.value) {\r\n stream.value.getTracks().forEach(t => {\r\n t.stop()\r\n })\r\n stream.value = null\r\n }\r\n if (videoRef.value) {\r\n videoRef.value.srcObject = null\r\n }\r\n }\r\n\r\n function capture() {\r\n if (!videoRef.value) return\r\n\r\n const canvas = document.createElement('canvas')\r\n canvas.width = videoRef.value.videoWidth\r\n canvas.height = videoRef.value.videoHeight\r\n const ctx = canvas.getContext('2d')\r\n if (!ctx) return\r\n\r\n ctx.drawImage(videoRef.value, 0, 0)\r\n const dataUrl = canvas.toDataURL('image/jpeg')\r\n capturedUrl.value = dataUrl\r\n core?.emit('camera-capture', { dataUrl })\r\n }\r\n\r\n function clearUrl() {\r\n capturedUrl.value = ''\r\n }\r\n\r\n async function handleFetchImage() {\r\n if (!capturedUrl.value) return\r\n\r\n const response = await fetch(capturedUrl.value)\r\n const blob = await response.blob()\r\n const file = new File([blob], `capture-${Date.now()}.jpg`, {\r\n type: 'image/jpeg',\r\n })\r\n setFiles([file])\r\n capturedUrl.value = ''\r\n setActiveSource(undefined)\r\n core?.emit('camera-confirm', { file })\r\n }\r\n\r\n function handleCameraSwitch() {\r\n facingMode.value =\r\n facingMode.value === FacingMode.Environment\r\n ? FacingMode.User\r\n : FacingMode.Environment\r\n }\r\n\r\n onUnmounted(() => {\r\n stopCamera()\r\n })\r\n\r\n return {\r\n videoRef,\r\n capturedUrl,\r\n facingMode,\r\n newCameraSide,\r\n startCamera,\r\n stopCamera,\r\n capture,\r\n clearUrl,\r\n handleFetchImage,\r\n handleCameraSwitch,\r\n translations,\r\n props,\r\n theme,\r\n }\r\n}\r\n"],"mappings":"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","names":["t"]}
|