@bigbinary/neeto-image-uploader-frontend 4.0.11 → 4.0.12
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/dist/.ready +1 -1
- package/dist/AssetLibrary.js +10 -10
- package/dist/BasicImageUploader.js +4 -4
- package/dist/ImageForm.js +8 -8
- package/dist/ImageUploader.js +8 -8
- package/dist/cjs/AssetLibrary.js +10 -10
- package/dist/cjs/BasicImageUploader.js +4 -4
- package/dist/cjs/ImageForm.js +8 -8
- package/dist/cjs/ImageUploader.js +8 -8
- package/dist/cjs/hooks.js +5 -4
- package/dist/cjs/hooks.js.map +1 -1
- package/dist/cjs/index.js +9 -9
- package/dist/cjs/v2/AssetLibrary.js +9 -10
- package/dist/cjs/v2/AssetLibrary.js.map +1 -1
- package/dist/cjs/v2/BasicImageUploader.js +2 -4
- package/dist/cjs/v2/BasicImageUploader.js.map +1 -1
- package/dist/cjs/v2/ImageForm.js +8 -9
- package/dist/cjs/v2/ImageForm.js.map +1 -1
- package/dist/cjs/v2/ImageUploader.js +8 -9
- package/dist/cjs/v2/ImageUploader.js.map +1 -1
- package/dist/cjs/v2/hooks.js +20 -476
- package/dist/cjs/v2/hooks.js.map +1 -1
- package/dist/cjs/v2/index.js +9 -10
- package/dist/cjs/v2/index.js.map +1 -1
- package/dist/constants-BF4SgnWe.js +12 -0
- package/dist/constants-BF4SgnWe.js.map +1 -0
- package/dist/{constants-BVxeajuh.js → constants-D8YY7aVx.js} +2 -2
- package/dist/{constants-BVxeajuh.js.map → constants-D8YY7aVx.js.map} +1 -1
- package/dist/constants-Dos-Y7GC.js +15 -0
- package/dist/constants-Dos-Y7GC.js.map +1 -0
- package/dist/{constants-BJsrtAQc.js → constants-rSdnoUWv.js} +2 -2
- package/dist/{constants-BJsrtAQc.js.map → constants-rSdnoUWv.js.map} +1 -1
- package/dist/hooks.js +5 -4
- package/dist/hooks.js.map +1 -1
- package/dist/{imagekit.esm-Bps9lPzh.js → imagekit.esm-Wbu4ABaW.js} +2 -12
- package/dist/imagekit.esm-Wbu4ABaW.js.map +1 -0
- package/dist/{imagekit.esm-BOkeWsyX.js → imagekit.esm-ZYrS-YIL.js} +1 -13
- package/dist/imagekit.esm-ZYrS-YIL.js.map +1 -0
- package/dist/{index-YZ7Lhfkg.js → index-BFPek9ek.js} +7 -8
- package/dist/{index-7XBgPy09.js.map → index-BFPek9ek.js.map} +1 -1
- package/dist/{index-7XBgPy09.js → index-CbRMVeis.js} +8 -9
- package/dist/{index-YZ7Lhfkg.js.map → index-CbRMVeis.js.map} +1 -1
- package/dist/{index-DfxvM32h.js → index-e471xvRu.js} +6 -7
- package/dist/index-e471xvRu.js.map +1 -0
- package/dist/{index-PE1rZoJJ.js → index-q56JLh5J.js} +7 -8
- package/dist/index-q56JLh5J.js.map +1 -0
- package/dist/index.js +9 -9
- package/dist/{useImageUploader-CHyjhRSo.js → useImageUploader-BsSpqUky.js} +4 -3
- package/dist/useImageUploader-BsSpqUky.js.map +1 -0
- package/dist/{useImageUploader-sa1Apcxi.js → useImageUploader-J3bippyP.js} +6 -5
- package/dist/useImageUploader-J3bippyP.js.map +1 -0
- package/dist/useImageUploader-TOt_v6Rn.js +225 -0
- package/dist/useImageUploader-TOt_v6Rn.js.map +1 -0
- package/dist/useImageUploader-uFdwIcWA.js +223 -0
- package/dist/useImageUploader-uFdwIcWA.js.map +1 -0
- package/dist/useProfileImageUpload-BZb8Cttj.js +272 -0
- package/dist/useProfileImageUpload-BZb8Cttj.js.map +1 -0
- package/dist/{useProfileImageUpload-C7ealrbB.js → useProfileImageUpload-CeIh1MMh.js} +3 -3
- package/dist/{useProfileImageUpload-C7ealrbB.js.map → useProfileImageUpload-CeIh1MMh.js.map} +1 -1
- package/dist/{useProfileImageUpload-BM3MsePR.js → useProfileImageUpload-D5doE-yM.js} +3 -3
- package/dist/{useProfileImageUpload-BM3MsePR.js.map → useProfileImageUpload-D5doE-yM.js.map} +1 -1
- package/dist/useProfileImageUpload-YeoM7k6I.js +269 -0
- package/dist/useProfileImageUpload-YeoM7k6I.js.map +1 -0
- package/dist/{useUnsplashApi-2sRCzI6B.js → useUnsplashApi-BLygxRcf.js} +3 -3
- package/dist/{useUnsplashApi-2sRCzI6B.js.map → useUnsplashApi-BLygxRcf.js.map} +1 -1
- package/dist/{useUnsplashApi-okMiRC9G.js → useUnsplashApi-Dl6ZdUSP.js} +3 -3
- package/dist/{useUnsplashApi-okMiRC9G.js.map → useUnsplashApi-Dl6ZdUSP.js.map} +1 -1
- package/dist/{utils-adgVs86v.js → utils-BkIHGr19.js} +57 -5
- package/dist/utils-BkIHGr19.js.map +1 -0
- package/dist/{utils-CDFlFfgu.js → utils-BuYOlqCV.js} +62 -13
- package/dist/utils-BuYOlqCV.js.map +1 -0
- package/dist/{utils-kGoo6Gnk.js → utils-C-_hvapN.js} +57 -6
- package/dist/utils-C-_hvapN.js.map +1 -0
- package/dist/{utils-DbfNL99D.js → utils-DQSN1LLd.js} +2 -2
- package/dist/{utils-DbfNL99D.js.map → utils-DQSN1LLd.js.map} +1 -1
- package/dist/{utils-KinCgQeq.js → utils-Dshsishe.js} +2 -2
- package/dist/{utils-KinCgQeq.js.map → utils-Dshsishe.js.map} +1 -1
- package/dist/{utils-B9Wu-jti.js → utils-gOguzq7u.js} +64 -16
- package/dist/utils-gOguzq7u.js.map +1 -0
- package/dist/v2/AssetLibrary.js +9 -10
- package/dist/v2/AssetLibrary.js.map +1 -1
- package/dist/v2/BasicImageUploader.js +2 -4
- package/dist/v2/BasicImageUploader.js.map +1 -1
- package/dist/v2/ImageForm.js +8 -9
- package/dist/v2/ImageForm.js.map +1 -1
- package/dist/v2/ImageUploader.js +8 -9
- package/dist/v2/ImageUploader.js.map +1 -1
- package/dist/v2/hooks.js +17 -477
- package/dist/v2/hooks.js.map +1 -1
- package/dist/v2/index.js +9 -10
- package/dist/v2/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/imagekit.esm-BOkeWsyX.js.map +0 -1
- package/dist/imagekit.esm-Bps9lPzh.js.map +0 -1
- package/dist/index-DfxvM32h.js.map +0 -1
- package/dist/index-PE1rZoJJ.js.map +0 -1
- package/dist/useImageUploader-CHyjhRSo.js.map +0 -1
- package/dist/useImageUploader-sa1Apcxi.js.map +0 -1
- package/dist/useUploadDropzone-CTwUeaY1.js +0 -57
- package/dist/useUploadDropzone-CTwUeaY1.js.map +0 -1
- package/dist/useUploadDropzone-I7mlv7Zx.js +0 -59
- package/dist/useUploadDropzone-I7mlv7Zx.js.map +0 -1
- package/dist/utils-B9Wu-jti.js.map +0 -1
- package/dist/utils-CDFlFfgu.js.map +0 -1
- package/dist/utils-adgVs86v.js.map +0 -1
- package/dist/utils-kGoo6Gnk.js.map +0 -1
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
+
var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
|
|
5
|
+
var _regeneratorRuntime = require('@babel/runtime/regenerator');
|
|
6
|
+
var neetoAtoms = require('@bigbinary/neeto-atoms');
|
|
7
|
+
var activestorage = require('@rails/activestorage');
|
|
8
|
+
var i18next = require('i18next');
|
|
9
|
+
var imagekit_esm = require('./imagekit.esm-ZYrS-YIL.js');
|
|
10
|
+
var neetoCist = require('@bigbinary/neeto-cist');
|
|
11
|
+
var initializers = require('@bigbinary/neeto-commons-frontend/initializers');
|
|
12
|
+
var ramda = require('ramda');
|
|
13
|
+
var utils = require('./utils-Dshsishe.js');
|
|
14
|
+
var constants = require('./constants-Dos-Y7GC.js');
|
|
15
|
+
var query = require('./query-eZTZ-5Dm.js');
|
|
16
|
+
|
|
17
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
18
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
19
|
+
var useImageUploader = function useImageUploader(_ref) {
|
|
20
|
+
var _ref$onUploadComplete = _ref.onUploadComplete,
|
|
21
|
+
onUploadComplete = _ref$onUploadComplete === void 0 ? neetoCist.noop : _ref$onUploadComplete,
|
|
22
|
+
_ref$setIsUploading = _ref.setIsUploading,
|
|
23
|
+
setIsUploading = _ref$setIsUploading === void 0 ? neetoCist.noop : _ref$setIsUploading;
|
|
24
|
+
var authenticationEndpoint = "".concat(window.location.origin, "/").concat(imagekit_esm.IMAGE_UPLOADER_BASE_URL, "/imagekit/auth");
|
|
25
|
+
var handleUploadProgress = function handleUploadProgress(e, fileSize, setUploadProgress) {
|
|
26
|
+
if (e.loaded <= fileSize) {
|
|
27
|
+
var percent = Math.round(e.loaded / fileSize * 100);
|
|
28
|
+
setUploadProgress(percent);
|
|
29
|
+
}
|
|
30
|
+
ramda.equals(e.loaded, e.total) && setUploadProgress(100);
|
|
31
|
+
};
|
|
32
|
+
var directUpload = function directUpload(file, setUploadProgress) {
|
|
33
|
+
try {
|
|
34
|
+
setIsUploading(true);
|
|
35
|
+
var upload = new activestorage.DirectUpload(file, "/api/direct_uploads", {
|
|
36
|
+
directUploadWillStoreFileWithXHR: function directUploadWillStoreFileWithXHR(xhr) {
|
|
37
|
+
xhr.upload.addEventListener("progress", function (event) {
|
|
38
|
+
var percentComplete = Math.round(event.loaded / event.total * 100);
|
|
39
|
+
setUploadProgress(percentComplete);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
upload.create(function (error, blob) {
|
|
44
|
+
if (error) {
|
|
45
|
+
neetoAtoms.Toastr.error((error === null || error === void 0 ? void 0 : error.message) || i18next.t("neetoImageUploader.imageUpload.fileUploadFailed"));
|
|
46
|
+
setIsUploading(false);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (!blob) {
|
|
50
|
+
neetoAtoms.Toastr.error(i18next.t("neetoImageUploader.imageUpload.noBlobReturned"));
|
|
51
|
+
setIsUploading(false);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
var payload = {
|
|
55
|
+
id: blob.signed_id,
|
|
56
|
+
payload: {
|
|
57
|
+
metadata: {
|
|
58
|
+
organizationKey: initializers.globalProps.organization.publicApiKey,
|
|
59
|
+
url: blob.blob_url
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
utils.directUploadsApi.update(payload);
|
|
64
|
+
var result = ramda.mergeRight(neetoCist.keysToCamelCase(blob), {
|
|
65
|
+
url: blob.blob_url
|
|
66
|
+
});
|
|
67
|
+
onUploadComplete(result);
|
|
68
|
+
});
|
|
69
|
+
} catch (error) {
|
|
70
|
+
neetoAtoms.Toastr.error(error);
|
|
71
|
+
} finally {
|
|
72
|
+
setIsUploading(false);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
var imageKitUpload = /*#__PURE__*/function () {
|
|
76
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(file, XHRProgress) {
|
|
77
|
+
var bitmap, pixels, imagekit, result;
|
|
78
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
79
|
+
while (1) switch (_context.prev = _context.next) {
|
|
80
|
+
case 0:
|
|
81
|
+
_context.next = 2;
|
|
82
|
+
return createImageBitmap(file);
|
|
83
|
+
case 2:
|
|
84
|
+
bitmap = _context.sent;
|
|
85
|
+
pixels = bitmap.width * bitmap.height;
|
|
86
|
+
bitmap.close();
|
|
87
|
+
if (!(pixels > query.IMAGEKIT_MAX_PIXELS)) {
|
|
88
|
+
_context.next = 8;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
neetoAtoms.Toastr.error(constants.FILE_ERRORS["file-resolution-too-large"], {
|
|
92
|
+
autoClose: 5000
|
|
93
|
+
});
|
|
94
|
+
return _context.abrupt("return");
|
|
95
|
+
case 8:
|
|
96
|
+
_context.prev = 8;
|
|
97
|
+
imagekit = new imagekit_esm.ImageKit(ramda.mergeRight(initializers.globalProps.imagekit, {
|
|
98
|
+
authenticationEndpoint: authenticationEndpoint
|
|
99
|
+
}));
|
|
100
|
+
setIsUploading(true);
|
|
101
|
+
_context.next = 13;
|
|
102
|
+
return imagekit.upload({
|
|
103
|
+
xhr: XHRProgress,
|
|
104
|
+
file: file,
|
|
105
|
+
fileName: utils.generateASCIIFileName(file.name),
|
|
106
|
+
folder: initializers.globalProps.imagekit.folder,
|
|
107
|
+
customMetadata: {
|
|
108
|
+
organizationKey: initializers.globalProps.organization.publicApiKey,
|
|
109
|
+
appName: initializers.globalProps.appName
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
case 13:
|
|
113
|
+
result = _context.sent;
|
|
114
|
+
onUploadComplete(result);
|
|
115
|
+
_context.next = 20;
|
|
116
|
+
break;
|
|
117
|
+
case 17:
|
|
118
|
+
_context.prev = 17;
|
|
119
|
+
_context.t0 = _context["catch"](8);
|
|
120
|
+
neetoAtoms.Toastr.error(_context.t0);
|
|
121
|
+
case 20:
|
|
122
|
+
_context.prev = 20;
|
|
123
|
+
setIsUploading(false);
|
|
124
|
+
return _context.finish(20);
|
|
125
|
+
case 23:
|
|
126
|
+
case "end":
|
|
127
|
+
return _context.stop();
|
|
128
|
+
}
|
|
129
|
+
}, _callee, null, [[8, 17, 20, 23]]);
|
|
130
|
+
}));
|
|
131
|
+
return function imageKitUpload(_x, _x2) {
|
|
132
|
+
return _ref2.apply(this, arguments);
|
|
133
|
+
};
|
|
134
|
+
}();
|
|
135
|
+
var cloudFlareImageUpload = function cloudFlareImageUpload(file, setUploadProgress) {
|
|
136
|
+
var img = new Image();
|
|
137
|
+
img.src = URL.createObjectURL(file);
|
|
138
|
+
var formData = new FormData();
|
|
139
|
+
formData.append("file", file);
|
|
140
|
+
img.onload = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
141
|
+
var width, height, _yield$cloudflareImag, uploadURL, _yield$cloudflareImag2, result, uploadData, _error$response;
|
|
142
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
143
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
144
|
+
case 0:
|
|
145
|
+
img.onload = null;
|
|
146
|
+
width = img.width, height = img.height;
|
|
147
|
+
if (!(width > query.MAX_DIMENSION || height > query.MAX_DIMENSION)) {
|
|
148
|
+
_context2.next = 5;
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
neetoAtoms.Toastr.error(constants.FILE_ERRORS["file-dimension-too-large"], {
|
|
152
|
+
autoClose: 5000
|
|
153
|
+
});
|
|
154
|
+
return _context2.abrupt("return");
|
|
155
|
+
case 5:
|
|
156
|
+
URL.revokeObjectURL(img.src);
|
|
157
|
+
setIsUploading(true);
|
|
158
|
+
_context2.prev = 7;
|
|
159
|
+
_context2.next = 10;
|
|
160
|
+
return utils.cloudflareImageApi.generate();
|
|
161
|
+
case 10:
|
|
162
|
+
_yield$cloudflareImag = _context2.sent;
|
|
163
|
+
uploadURL = _yield$cloudflareImag.result.uploadURL;
|
|
164
|
+
_context2.next = 14;
|
|
165
|
+
return utils.cloudflareImageApi.upload({
|
|
166
|
+
url: uploadURL,
|
|
167
|
+
formData: formData,
|
|
168
|
+
setUploadProgress: setUploadProgress
|
|
169
|
+
});
|
|
170
|
+
case 14:
|
|
171
|
+
_yield$cloudflareImag2 = _context2.sent;
|
|
172
|
+
result = _yield$cloudflareImag2.result;
|
|
173
|
+
uploadData = _objectSpread(_objectSpread({}, result), {}, {
|
|
174
|
+
contentType: file.type,
|
|
175
|
+
metadata: _objectSpread(_objectSpread({}, result), {}, {
|
|
176
|
+
width: width,
|
|
177
|
+
height: height
|
|
178
|
+
}),
|
|
179
|
+
url: result.variants[0],
|
|
180
|
+
byteSize: file.size,
|
|
181
|
+
checksum: result.id
|
|
182
|
+
});
|
|
183
|
+
onUploadComplete(uploadData);
|
|
184
|
+
setIsUploading(false);
|
|
185
|
+
_context2.next = 25;
|
|
186
|
+
break;
|
|
187
|
+
case 21:
|
|
188
|
+
_context2.prev = 21;
|
|
189
|
+
_context2.t0 = _context2["catch"](7);
|
|
190
|
+
neetoAtoms.Toastr.error((_error$response = _context2.t0.response) === null || _error$response === void 0 || (_error$response = _error$response.data) === null || _error$response === void 0 || (_error$response = _error$response.errors) === null || _error$response === void 0 || (_error$response = _error$response[0]) === null || _error$response === void 0 ? void 0 : _error$response.message, {
|
|
191
|
+
autoClose: 10000
|
|
192
|
+
});
|
|
193
|
+
setIsUploading(false);
|
|
194
|
+
case 25:
|
|
195
|
+
case "end":
|
|
196
|
+
return _context2.stop();
|
|
197
|
+
}
|
|
198
|
+
}, _callee2, null, [[7, 21]]);
|
|
199
|
+
}));
|
|
200
|
+
};
|
|
201
|
+
var uploadFile = function uploadFile(file) {
|
|
202
|
+
var setUploadProgress = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : neetoCist.noop;
|
|
203
|
+
if (ramda.isNil(file)) return;
|
|
204
|
+
var fileSize = file.size;
|
|
205
|
+
var XHRProgress = new XMLHttpRequest();
|
|
206
|
+
XHRProgress.upload.addEventListener("progress", function (e) {
|
|
207
|
+
handleUploadProgress(e, fileSize, setUploadProgress);
|
|
208
|
+
});
|
|
209
|
+
if (imagekit_esm.IS_DEVELOPMENT_OR_HEROKU_ENV || utils.isGif(file)) {
|
|
210
|
+
directUpload(file, setUploadProgress);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
if (initializers.globalProps.assetsUploaderService === imagekit_esm.CLOUD_FLARE) {
|
|
214
|
+
cloudFlareImageUpload(file, setUploadProgress);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
imageKitUpload(file, XHRProgress);
|
|
218
|
+
};
|
|
219
|
+
return {
|
|
220
|
+
uploadFile: uploadFile
|
|
221
|
+
};
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
exports.useImageUploader = useImageUploader;
|
|
225
|
+
//# sourceMappingURL=useImageUploader-TOt_v6Rn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useImageUploader-TOt_v6Rn.js","sources":["../app/javascript/src/v2/hooks/useImageUploader.js"],"sourcesContent":["import { Toastr } from \"@bigbinary/neeto-atoms\";\nimport { DirectUpload } from \"@rails/activestorage\";\nimport { t } from \"i18next\";\nimport ImageKit from \"imagekit-javascript\";\nimport { keysToCamelCase, noop } from \"neetocist\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { equals, isNil, mergeRight } from \"ramda\";\n\nimport cloudflareImageApi from \"apis/cloudflare_image\";\nimport directUploadsApi from \"apis/direct_uploads\";\nimport { FILE_ERRORS } from \"components/common/constants\";\nimport { generateASCIIFileName, isGif } from \"hooks/utils\";\nimport {\n CLOUD_FLARE,\n IS_DEVELOPMENT_OR_HEROKU_ENV,\n IMAGE_UPLOADER_BASE_URL,\n} from \"src/constants\";\nimport { IMAGEKIT_MAX_PIXELS, MAX_DIMENSION } from \"src/constants/query\";\n\nconst useImageUploader = ({\n onUploadComplete = noop,\n setIsUploading = noop,\n}) => {\n const authenticationEndpoint = `${window.location.origin}/${IMAGE_UPLOADER_BASE_URL}/imagekit/auth`;\n\n const handleUploadProgress = (e, fileSize, setUploadProgress) => {\n if (e.loaded <= fileSize) {\n const percent = Math.round((e.loaded / fileSize) * 100);\n setUploadProgress(percent);\n }\n equals(e.loaded, e.total) && setUploadProgress(100);\n };\n\n const directUpload = (file, setUploadProgress) => {\n try {\n setIsUploading(true);\n const upload = new DirectUpload(file, \"/api/direct_uploads\", {\n directUploadWillStoreFileWithXHR: xhr => {\n xhr.upload.addEventListener(\"progress\", event => {\n const percentComplete = Math.round(\n (event.loaded / event.total) * 100\n );\n setUploadProgress(percentComplete);\n });\n },\n });\n\n upload.create((error, blob) => {\n if (error) {\n Toastr.error(\n error?.message ||\n t(\"neetoImageUploader.imageUpload.fileUploadFailed\")\n );\n setIsUploading(false);\n\n return;\n }\n\n if (!blob) {\n Toastr.error(t(\"neetoImageUploader.imageUpload.noBlobReturned\"));\n setIsUploading(false);\n\n return;\n }\n\n const payload = {\n id: blob.signed_id,\n payload: {\n metadata: {\n organizationKey: globalProps.organization.publicApiKey,\n url: blob.blob_url,\n },\n },\n };\n directUploadsApi.update(payload);\n\n const result = mergeRight(keysToCamelCase(blob), {\n url: blob.blob_url,\n });\n\n onUploadComplete(result);\n });\n } catch (error) {\n Toastr.error(error);\n } finally {\n setIsUploading(false);\n }\n };\n\n const imageKitUpload = async (file, XHRProgress) => {\n const bitmap = await createImageBitmap(file);\n const pixels = bitmap.width * bitmap.height;\n bitmap.close();\n\n if (pixels > IMAGEKIT_MAX_PIXELS) {\n Toastr.error(FILE_ERRORS[\"file-resolution-too-large\"], {\n autoClose: 5000,\n });\n\n return;\n }\n\n try {\n const imagekit = new ImageKit(\n mergeRight(globalProps.imagekit, { authenticationEndpoint })\n );\n setIsUploading(true);\n const result = await imagekit.upload({\n xhr: XHRProgress,\n file,\n fileName: generateASCIIFileName(file.name),\n folder: globalProps.imagekit.folder,\n customMetadata: {\n organizationKey: globalProps.organization.publicApiKey,\n appName: globalProps.appName,\n },\n });\n\n onUploadComplete(result);\n } catch (error) {\n Toastr.error(error);\n } finally {\n setIsUploading(false);\n }\n };\n\n const cloudFlareImageUpload = (file, setUploadProgress) => {\n const img = new Image();\n img.src = URL.createObjectURL(file);\n const formData = new FormData();\n formData.append(\"file\", file);\n\n img.onload = async () => {\n img.onload = null;\n const { width, height } = img;\n if (width > MAX_DIMENSION || height > MAX_DIMENSION) {\n Toastr.error(FILE_ERRORS[\"file-dimension-too-large\"], {\n autoClose: 5000,\n });\n\n return;\n }\n URL.revokeObjectURL(img.src);\n\n setIsUploading(true);\n try {\n const {\n result: { uploadURL },\n } = await cloudflareImageApi.generate();\n\n const { result } = await cloudflareImageApi.upload({\n url: uploadURL,\n formData,\n setUploadProgress,\n });\n\n const uploadData = {\n ...result,\n contentType: file.type,\n metadata: { ...result, width, height },\n url: result.variants[0],\n byteSize: file.size,\n checksum: result.id,\n };\n\n onUploadComplete(uploadData);\n setIsUploading(false);\n } catch (error) {\n Toastr.error(error.response?.data?.errors?.[0]?.message, {\n autoClose: 10000,\n });\n setIsUploading(false);\n }\n };\n };\n\n const uploadFile = (file, setUploadProgress = noop) => {\n if (isNil(file)) return;\n\n const fileSize = file.size;\n const XHRProgress = new XMLHttpRequest();\n XHRProgress.upload.addEventListener(\"progress\", e => {\n handleUploadProgress(e, fileSize, setUploadProgress);\n });\n\n if (IS_DEVELOPMENT_OR_HEROKU_ENV || isGif(file)) {\n directUpload(file, setUploadProgress);\n\n return;\n }\n\n if (globalProps.assetsUploaderService === CLOUD_FLARE) {\n cloudFlareImageUpload(file, setUploadProgress);\n\n return;\n }\n\n imageKitUpload(file, XHRProgress);\n };\n\n return { uploadFile };\n};\n\nexport default useImageUploader;\n"],"names":["useImageUploader","_ref","_ref$onUploadComplete","onUploadComplete","noop","_ref$setIsUploading","setIsUploading","authenticationEndpoint","concat","window","location","origin","IMAGE_UPLOADER_BASE_URL","handleUploadProgress","e","fileSize","setUploadProgress","loaded","percent","Math","round","equals","total","directUpload","file","upload","DirectUpload","directUploadWillStoreFileWithXHR","xhr","addEventListener","event","percentComplete","create","error","blob","Toastr","message","t","payload","id","signed_id","metadata","organizationKey","globalProps","organization","publicApiKey","url","blob_url","directUploadsApi","update","result","mergeRight","keysToCamelCase","imageKitUpload","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","XHRProgress","bitmap","pixels","imagekit","wrap","_callee$","_context","prev","next","createImageBitmap","sent","width","height","close","IMAGEKIT_MAX_PIXELS","FILE_ERRORS","autoClose","abrupt","ImageKit","fileName","generateASCIIFileName","name","folder","customMetadata","appName","t0","finish","stop","_x","_x2","apply","arguments","cloudFlareImageUpload","img","Image","src","URL","createObjectURL","formData","FormData","append","onload","_callee2","_yield$cloudflareImag","uploadURL","_yield$cloudflareImag2","uploadData","_error$response","_callee2$","_context2","MAX_DIMENSION","revokeObjectURL","cloudflareImageApi","generate","_objectSpread","contentType","type","variants","byteSize","size","checksum","response","data","errors","uploadFile","length","undefined","isNil","XMLHttpRequest","IS_DEVELOPMENT_OR_HEROKU_ENV","isGif","assetsUploaderService","CLOUD_FLARE"],"mappings":"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"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
|
+
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
3
|
+
import _regeneratorRuntime from '@babel/runtime/regenerator';
|
|
4
|
+
import { Toastr } from '@bigbinary/neeto-atoms';
|
|
5
|
+
import { DirectUpload } from '@rails/activestorage';
|
|
6
|
+
import { t } from 'i18next';
|
|
7
|
+
import { I as IS_DEVELOPMENT_OR_HEROKU_ENV, C as CLOUD_FLARE, a as ImageKit, b as IMAGE_UPLOADER_BASE_URL } from './imagekit.esm-Wbu4ABaW.js';
|
|
8
|
+
import { noop, keysToCamelCase } from '@bigbinary/neeto-cist';
|
|
9
|
+
import { globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
|
|
10
|
+
import { isNil, equals, mergeRight } from 'ramda';
|
|
11
|
+
import { i as isGif, d as directUploadsApi, g as generateASCIIFileName, c as cloudflareImageApi } from './utils-DQSN1LLd.js';
|
|
12
|
+
import { F as FILE_ERRORS } from './constants-BF4SgnWe.js';
|
|
13
|
+
import { I as IMAGEKIT_MAX_PIXELS, M as MAX_DIMENSION } from './query-BJnGLX4z.js';
|
|
14
|
+
|
|
15
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
|
+
var useImageUploader = function useImageUploader(_ref) {
|
|
18
|
+
var _ref$onUploadComplete = _ref.onUploadComplete,
|
|
19
|
+
onUploadComplete = _ref$onUploadComplete === void 0 ? noop : _ref$onUploadComplete,
|
|
20
|
+
_ref$setIsUploading = _ref.setIsUploading,
|
|
21
|
+
setIsUploading = _ref$setIsUploading === void 0 ? noop : _ref$setIsUploading;
|
|
22
|
+
var authenticationEndpoint = "".concat(window.location.origin, "/").concat(IMAGE_UPLOADER_BASE_URL, "/imagekit/auth");
|
|
23
|
+
var handleUploadProgress = function handleUploadProgress(e, fileSize, setUploadProgress) {
|
|
24
|
+
if (e.loaded <= fileSize) {
|
|
25
|
+
var percent = Math.round(e.loaded / fileSize * 100);
|
|
26
|
+
setUploadProgress(percent);
|
|
27
|
+
}
|
|
28
|
+
equals(e.loaded, e.total) && setUploadProgress(100);
|
|
29
|
+
};
|
|
30
|
+
var directUpload = function directUpload(file, setUploadProgress) {
|
|
31
|
+
try {
|
|
32
|
+
setIsUploading(true);
|
|
33
|
+
var upload = new DirectUpload(file, "/api/direct_uploads", {
|
|
34
|
+
directUploadWillStoreFileWithXHR: function directUploadWillStoreFileWithXHR(xhr) {
|
|
35
|
+
xhr.upload.addEventListener("progress", function (event) {
|
|
36
|
+
var percentComplete = Math.round(event.loaded / event.total * 100);
|
|
37
|
+
setUploadProgress(percentComplete);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
upload.create(function (error, blob) {
|
|
42
|
+
if (error) {
|
|
43
|
+
Toastr.error((error === null || error === void 0 ? void 0 : error.message) || t("neetoImageUploader.imageUpload.fileUploadFailed"));
|
|
44
|
+
setIsUploading(false);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (!blob) {
|
|
48
|
+
Toastr.error(t("neetoImageUploader.imageUpload.noBlobReturned"));
|
|
49
|
+
setIsUploading(false);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
var payload = {
|
|
53
|
+
id: blob.signed_id,
|
|
54
|
+
payload: {
|
|
55
|
+
metadata: {
|
|
56
|
+
organizationKey: globalProps.organization.publicApiKey,
|
|
57
|
+
url: blob.blob_url
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
directUploadsApi.update(payload);
|
|
62
|
+
var result = mergeRight(keysToCamelCase(blob), {
|
|
63
|
+
url: blob.blob_url
|
|
64
|
+
});
|
|
65
|
+
onUploadComplete(result);
|
|
66
|
+
});
|
|
67
|
+
} catch (error) {
|
|
68
|
+
Toastr.error(error);
|
|
69
|
+
} finally {
|
|
70
|
+
setIsUploading(false);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
var imageKitUpload = /*#__PURE__*/function () {
|
|
74
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(file, XHRProgress) {
|
|
75
|
+
var bitmap, pixels, imagekit, result;
|
|
76
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
77
|
+
while (1) switch (_context.prev = _context.next) {
|
|
78
|
+
case 0:
|
|
79
|
+
_context.next = 2;
|
|
80
|
+
return createImageBitmap(file);
|
|
81
|
+
case 2:
|
|
82
|
+
bitmap = _context.sent;
|
|
83
|
+
pixels = bitmap.width * bitmap.height;
|
|
84
|
+
bitmap.close();
|
|
85
|
+
if (!(pixels > IMAGEKIT_MAX_PIXELS)) {
|
|
86
|
+
_context.next = 8;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
Toastr.error(FILE_ERRORS["file-resolution-too-large"], {
|
|
90
|
+
autoClose: 5000
|
|
91
|
+
});
|
|
92
|
+
return _context.abrupt("return");
|
|
93
|
+
case 8:
|
|
94
|
+
_context.prev = 8;
|
|
95
|
+
imagekit = new ImageKit(mergeRight(globalProps.imagekit, {
|
|
96
|
+
authenticationEndpoint: authenticationEndpoint
|
|
97
|
+
}));
|
|
98
|
+
setIsUploading(true);
|
|
99
|
+
_context.next = 13;
|
|
100
|
+
return imagekit.upload({
|
|
101
|
+
xhr: XHRProgress,
|
|
102
|
+
file: file,
|
|
103
|
+
fileName: generateASCIIFileName(file.name),
|
|
104
|
+
folder: globalProps.imagekit.folder,
|
|
105
|
+
customMetadata: {
|
|
106
|
+
organizationKey: globalProps.organization.publicApiKey,
|
|
107
|
+
appName: globalProps.appName
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
case 13:
|
|
111
|
+
result = _context.sent;
|
|
112
|
+
onUploadComplete(result);
|
|
113
|
+
_context.next = 20;
|
|
114
|
+
break;
|
|
115
|
+
case 17:
|
|
116
|
+
_context.prev = 17;
|
|
117
|
+
_context.t0 = _context["catch"](8);
|
|
118
|
+
Toastr.error(_context.t0);
|
|
119
|
+
case 20:
|
|
120
|
+
_context.prev = 20;
|
|
121
|
+
setIsUploading(false);
|
|
122
|
+
return _context.finish(20);
|
|
123
|
+
case 23:
|
|
124
|
+
case "end":
|
|
125
|
+
return _context.stop();
|
|
126
|
+
}
|
|
127
|
+
}, _callee, null, [[8, 17, 20, 23]]);
|
|
128
|
+
}));
|
|
129
|
+
return function imageKitUpload(_x, _x2) {
|
|
130
|
+
return _ref2.apply(this, arguments);
|
|
131
|
+
};
|
|
132
|
+
}();
|
|
133
|
+
var cloudFlareImageUpload = function cloudFlareImageUpload(file, setUploadProgress) {
|
|
134
|
+
var img = new Image();
|
|
135
|
+
img.src = URL.createObjectURL(file);
|
|
136
|
+
var formData = new FormData();
|
|
137
|
+
formData.append("file", file);
|
|
138
|
+
img.onload = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
139
|
+
var width, height, _yield$cloudflareImag, uploadURL, _yield$cloudflareImag2, result, uploadData, _error$response;
|
|
140
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
141
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
142
|
+
case 0:
|
|
143
|
+
img.onload = null;
|
|
144
|
+
width = img.width, height = img.height;
|
|
145
|
+
if (!(width > MAX_DIMENSION || height > MAX_DIMENSION)) {
|
|
146
|
+
_context2.next = 5;
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
Toastr.error(FILE_ERRORS["file-dimension-too-large"], {
|
|
150
|
+
autoClose: 5000
|
|
151
|
+
});
|
|
152
|
+
return _context2.abrupt("return");
|
|
153
|
+
case 5:
|
|
154
|
+
URL.revokeObjectURL(img.src);
|
|
155
|
+
setIsUploading(true);
|
|
156
|
+
_context2.prev = 7;
|
|
157
|
+
_context2.next = 10;
|
|
158
|
+
return cloudflareImageApi.generate();
|
|
159
|
+
case 10:
|
|
160
|
+
_yield$cloudflareImag = _context2.sent;
|
|
161
|
+
uploadURL = _yield$cloudflareImag.result.uploadURL;
|
|
162
|
+
_context2.next = 14;
|
|
163
|
+
return cloudflareImageApi.upload({
|
|
164
|
+
url: uploadURL,
|
|
165
|
+
formData: formData,
|
|
166
|
+
setUploadProgress: setUploadProgress
|
|
167
|
+
});
|
|
168
|
+
case 14:
|
|
169
|
+
_yield$cloudflareImag2 = _context2.sent;
|
|
170
|
+
result = _yield$cloudflareImag2.result;
|
|
171
|
+
uploadData = _objectSpread(_objectSpread({}, result), {}, {
|
|
172
|
+
contentType: file.type,
|
|
173
|
+
metadata: _objectSpread(_objectSpread({}, result), {}, {
|
|
174
|
+
width: width,
|
|
175
|
+
height: height
|
|
176
|
+
}),
|
|
177
|
+
url: result.variants[0],
|
|
178
|
+
byteSize: file.size,
|
|
179
|
+
checksum: result.id
|
|
180
|
+
});
|
|
181
|
+
onUploadComplete(uploadData);
|
|
182
|
+
setIsUploading(false);
|
|
183
|
+
_context2.next = 25;
|
|
184
|
+
break;
|
|
185
|
+
case 21:
|
|
186
|
+
_context2.prev = 21;
|
|
187
|
+
_context2.t0 = _context2["catch"](7);
|
|
188
|
+
Toastr.error((_error$response = _context2.t0.response) === null || _error$response === void 0 || (_error$response = _error$response.data) === null || _error$response === void 0 || (_error$response = _error$response.errors) === null || _error$response === void 0 || (_error$response = _error$response[0]) === null || _error$response === void 0 ? void 0 : _error$response.message, {
|
|
189
|
+
autoClose: 10000
|
|
190
|
+
});
|
|
191
|
+
setIsUploading(false);
|
|
192
|
+
case 25:
|
|
193
|
+
case "end":
|
|
194
|
+
return _context2.stop();
|
|
195
|
+
}
|
|
196
|
+
}, _callee2, null, [[7, 21]]);
|
|
197
|
+
}));
|
|
198
|
+
};
|
|
199
|
+
var uploadFile = function uploadFile(file) {
|
|
200
|
+
var setUploadProgress = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
|
|
201
|
+
if (isNil(file)) return;
|
|
202
|
+
var fileSize = file.size;
|
|
203
|
+
var XHRProgress = new XMLHttpRequest();
|
|
204
|
+
XHRProgress.upload.addEventListener("progress", function (e) {
|
|
205
|
+
handleUploadProgress(e, fileSize, setUploadProgress);
|
|
206
|
+
});
|
|
207
|
+
if (IS_DEVELOPMENT_OR_HEROKU_ENV || isGif(file)) {
|
|
208
|
+
directUpload(file, setUploadProgress);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (globalProps.assetsUploaderService === CLOUD_FLARE) {
|
|
212
|
+
cloudFlareImageUpload(file, setUploadProgress);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
imageKitUpload(file, XHRProgress);
|
|
216
|
+
};
|
|
217
|
+
return {
|
|
218
|
+
uploadFile: uploadFile
|
|
219
|
+
};
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
export { useImageUploader as u };
|
|
223
|
+
//# sourceMappingURL=useImageUploader-uFdwIcWA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useImageUploader-uFdwIcWA.js","sources":["../app/javascript/src/v2/hooks/useImageUploader.js"],"sourcesContent":["import { Toastr } from \"@bigbinary/neeto-atoms\";\nimport { DirectUpload } from \"@rails/activestorage\";\nimport { t } from \"i18next\";\nimport ImageKit from \"imagekit-javascript\";\nimport { keysToCamelCase, noop } from \"neetocist\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { equals, isNil, mergeRight } from \"ramda\";\n\nimport cloudflareImageApi from \"apis/cloudflare_image\";\nimport directUploadsApi from \"apis/direct_uploads\";\nimport { FILE_ERRORS } from \"components/common/constants\";\nimport { generateASCIIFileName, isGif } from \"hooks/utils\";\nimport {\n CLOUD_FLARE,\n IS_DEVELOPMENT_OR_HEROKU_ENV,\n IMAGE_UPLOADER_BASE_URL,\n} from \"src/constants\";\nimport { IMAGEKIT_MAX_PIXELS, MAX_DIMENSION } from \"src/constants/query\";\n\nconst useImageUploader = ({\n onUploadComplete = noop,\n setIsUploading = noop,\n}) => {\n const authenticationEndpoint = `${window.location.origin}/${IMAGE_UPLOADER_BASE_URL}/imagekit/auth`;\n\n const handleUploadProgress = (e, fileSize, setUploadProgress) => {\n if (e.loaded <= fileSize) {\n const percent = Math.round((e.loaded / fileSize) * 100);\n setUploadProgress(percent);\n }\n equals(e.loaded, e.total) && setUploadProgress(100);\n };\n\n const directUpload = (file, setUploadProgress) => {\n try {\n setIsUploading(true);\n const upload = new DirectUpload(file, \"/api/direct_uploads\", {\n directUploadWillStoreFileWithXHR: xhr => {\n xhr.upload.addEventListener(\"progress\", event => {\n const percentComplete = Math.round(\n (event.loaded / event.total) * 100\n );\n setUploadProgress(percentComplete);\n });\n },\n });\n\n upload.create((error, blob) => {\n if (error) {\n Toastr.error(\n error?.message ||\n t(\"neetoImageUploader.imageUpload.fileUploadFailed\")\n );\n setIsUploading(false);\n\n return;\n }\n\n if (!blob) {\n Toastr.error(t(\"neetoImageUploader.imageUpload.noBlobReturned\"));\n setIsUploading(false);\n\n return;\n }\n\n const payload = {\n id: blob.signed_id,\n payload: {\n metadata: {\n organizationKey: globalProps.organization.publicApiKey,\n url: blob.blob_url,\n },\n },\n };\n directUploadsApi.update(payload);\n\n const result = mergeRight(keysToCamelCase(blob), {\n url: blob.blob_url,\n });\n\n onUploadComplete(result);\n });\n } catch (error) {\n Toastr.error(error);\n } finally {\n setIsUploading(false);\n }\n };\n\n const imageKitUpload = async (file, XHRProgress) => {\n const bitmap = await createImageBitmap(file);\n const pixels = bitmap.width * bitmap.height;\n bitmap.close();\n\n if (pixels > IMAGEKIT_MAX_PIXELS) {\n Toastr.error(FILE_ERRORS[\"file-resolution-too-large\"], {\n autoClose: 5000,\n });\n\n return;\n }\n\n try {\n const imagekit = new ImageKit(\n mergeRight(globalProps.imagekit, { authenticationEndpoint })\n );\n setIsUploading(true);\n const result = await imagekit.upload({\n xhr: XHRProgress,\n file,\n fileName: generateASCIIFileName(file.name),\n folder: globalProps.imagekit.folder,\n customMetadata: {\n organizationKey: globalProps.organization.publicApiKey,\n appName: globalProps.appName,\n },\n });\n\n onUploadComplete(result);\n } catch (error) {\n Toastr.error(error);\n } finally {\n setIsUploading(false);\n }\n };\n\n const cloudFlareImageUpload = (file, setUploadProgress) => {\n const img = new Image();\n img.src = URL.createObjectURL(file);\n const formData = new FormData();\n formData.append(\"file\", file);\n\n img.onload = async () => {\n img.onload = null;\n const { width, height } = img;\n if (width > MAX_DIMENSION || height > MAX_DIMENSION) {\n Toastr.error(FILE_ERRORS[\"file-dimension-too-large\"], {\n autoClose: 5000,\n });\n\n return;\n }\n URL.revokeObjectURL(img.src);\n\n setIsUploading(true);\n try {\n const {\n result: { uploadURL },\n } = await cloudflareImageApi.generate();\n\n const { result } = await cloudflareImageApi.upload({\n url: uploadURL,\n formData,\n setUploadProgress,\n });\n\n const uploadData = {\n ...result,\n contentType: file.type,\n metadata: { ...result, width, height },\n url: result.variants[0],\n byteSize: file.size,\n checksum: result.id,\n };\n\n onUploadComplete(uploadData);\n setIsUploading(false);\n } catch (error) {\n Toastr.error(error.response?.data?.errors?.[0]?.message, {\n autoClose: 10000,\n });\n setIsUploading(false);\n }\n };\n };\n\n const uploadFile = (file, setUploadProgress = noop) => {\n if (isNil(file)) return;\n\n const fileSize = file.size;\n const XHRProgress = new XMLHttpRequest();\n XHRProgress.upload.addEventListener(\"progress\", e => {\n handleUploadProgress(e, fileSize, setUploadProgress);\n });\n\n if (IS_DEVELOPMENT_OR_HEROKU_ENV || isGif(file)) {\n directUpload(file, setUploadProgress);\n\n return;\n }\n\n if (globalProps.assetsUploaderService === CLOUD_FLARE) {\n cloudFlareImageUpload(file, setUploadProgress);\n\n return;\n }\n\n imageKitUpload(file, XHRProgress);\n };\n\n return { uploadFile };\n};\n\nexport default useImageUploader;\n"],"names":["useImageUploader","_ref","_ref$onUploadComplete","onUploadComplete","noop","_ref$setIsUploading","setIsUploading","authenticationEndpoint","concat","window","location","origin","IMAGE_UPLOADER_BASE_URL","handleUploadProgress","e","fileSize","setUploadProgress","loaded","percent","Math","round","equals","total","directUpload","file","upload","DirectUpload","directUploadWillStoreFileWithXHR","xhr","addEventListener","event","percentComplete","create","error","blob","Toastr","message","t","payload","id","signed_id","metadata","organizationKey","globalProps","organization","publicApiKey","url","blob_url","directUploadsApi","update","result","mergeRight","keysToCamelCase","imageKitUpload","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","XHRProgress","bitmap","pixels","imagekit","wrap","_callee$","_context","prev","next","createImageBitmap","sent","width","height","close","IMAGEKIT_MAX_PIXELS","FILE_ERRORS","autoClose","abrupt","ImageKit","fileName","generateASCIIFileName","name","folder","customMetadata","appName","t0","finish","stop","_x","_x2","apply","arguments","cloudFlareImageUpload","img","Image","src","URL","createObjectURL","formData","FormData","append","onload","_callee2","_yield$cloudflareImag","uploadURL","_yield$cloudflareImag2","uploadData","_error$response","_callee2$","_context2","MAX_DIMENSION","revokeObjectURL","cloudflareImageApi","generate","_objectSpread","contentType","type","variants","byteSize","size","checksum","response","data","errors","uploadFile","length","undefined","isNil","XMLHttpRequest","IS_DEVELOPMENT_OR_HEROKU_ENV","isGif","assetsUploaderService","CLOUD_FLARE"],"mappings":"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"}
|