@bigbinary/neeto-image-uploader-frontend 2.0.0 → 2.0.2
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/index.cjs.js +185 -1878
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +198 -1894
- package/dist/index.js.map +1 -1
- package/package.json +19 -16
package/dist/index.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import require$$0, {
|
|
1
|
+
import require$$0, { useState, useEffect, useRef, createElement } from 'react';
|
|
2
2
|
import classnames from 'classnames';
|
|
3
|
-
import { noop
|
|
4
|
-
import
|
|
3
|
+
import { noop, keysToCamelCase, findBy, isPresent } from '@bigbinary/neeto-cist';
|
|
4
|
+
import Delete from '@bigbinary/neeto-icons/Delete';
|
|
5
5
|
import Button from '@bigbinary/neetoui/Button';
|
|
6
6
|
import Typography from '@bigbinary/neetoui/Typography';
|
|
7
|
-
import { pipe, values, flatten
|
|
7
|
+
import { pipe, values, flatten, map, toUpper, join, equals, isNil, isEmpty, mergeRight, mergeLeft, identity, prop, mergeDeepRight } from 'ramda';
|
|
8
8
|
import { Trans, useTranslation } from 'react-i18next';
|
|
9
9
|
import { globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
|
|
10
|
+
import { useDropzone } from 'react-dropzone';
|
|
10
11
|
import i18next, { t as t$1 } from 'i18next';
|
|
11
12
|
import Toastr from '@bigbinary/neetoui/Toastr';
|
|
12
|
-
import { jsx, jsxs, Fragment
|
|
13
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
14
|
+
import MenuHorizontal from '@bigbinary/neeto-icons/MenuHorizontal';
|
|
13
15
|
import Dropdown from '@bigbinary/neetoui/Dropdown';
|
|
14
16
|
import NeetoUIModal from '@bigbinary/neetoui/Modal';
|
|
15
17
|
import Tab from '@bigbinary/neetoui/Tab';
|
|
@@ -18,6 +20,7 @@ import { useMutation, useInfiniteQuery, keepPreviousData } from '@tanstack/react
|
|
|
18
20
|
import { useMutationWithInvalidation, useDebounce } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
19
21
|
import axios from 'axios';
|
|
20
22
|
import { DirectUpload } from '@rails/activestorage';
|
|
23
|
+
import LeftArrow from '@bigbinary/neeto-icons/LeftArrow';
|
|
21
24
|
import { withEventTargetValue } from '@bigbinary/neeto-commons-frontend/utils';
|
|
22
25
|
import Input from '@bigbinary/neetoui/Input';
|
|
23
26
|
import Switch from '@bigbinary/neetoui/Switch';
|
|
@@ -53,7 +56,7 @@ function _toPropertyKey(arg) {
|
|
|
53
56
|
return _typeof$2(key) === "symbol" ? key : String(key);
|
|
54
57
|
}
|
|
55
58
|
|
|
56
|
-
function _defineProperty$
|
|
59
|
+
function _defineProperty$1(obj, key, value) {
|
|
57
60
|
key = _toPropertyKey(key);
|
|
58
61
|
if (key in obj) {
|
|
59
62
|
Object.defineProperty(obj, key, {
|
|
@@ -68,7 +71,7 @@ function _defineProperty$3(obj, key, value) {
|
|
|
68
71
|
return obj;
|
|
69
72
|
}
|
|
70
73
|
|
|
71
|
-
function _objectWithoutPropertiesLoose
|
|
74
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
72
75
|
if (source == null) return {};
|
|
73
76
|
var target = {};
|
|
74
77
|
var sourceKeys = Object.keys(source);
|
|
@@ -81,9 +84,9 @@ function _objectWithoutPropertiesLoose$1(source, excluded) {
|
|
|
81
84
|
return target;
|
|
82
85
|
}
|
|
83
86
|
|
|
84
|
-
function _objectWithoutProperties$
|
|
87
|
+
function _objectWithoutProperties$1(source, excluded) {
|
|
85
88
|
if (source == null) return {};
|
|
86
|
-
var target = _objectWithoutPropertiesLoose
|
|
89
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
87
90
|
var key, i;
|
|
88
91
|
if (Object.getOwnPropertySymbols) {
|
|
89
92
|
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
@@ -113,16 +116,16 @@ var OPTION_KEYS = {
|
|
|
113
116
|
};
|
|
114
117
|
|
|
115
118
|
var getAllowedTypes = function getAllowedTypes(uploadConfig) {
|
|
116
|
-
return pipe(values, flatten
|
|
119
|
+
return pipe(values, flatten, map(function (extension) {
|
|
117
120
|
return extension.slice(1);
|
|
118
121
|
}), map(toUpper), join(", "))(uploadConfig.allowedImageTypes);
|
|
119
122
|
};
|
|
120
123
|
|
|
121
|
-
function _arrayWithHoles
|
|
124
|
+
function _arrayWithHoles(arr) {
|
|
122
125
|
if (Array.isArray(arr)) return arr;
|
|
123
126
|
}
|
|
124
127
|
|
|
125
|
-
function _iterableToArrayLimit
|
|
128
|
+
function _iterableToArrayLimit(r, l) {
|
|
126
129
|
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
127
130
|
if (null != t) {
|
|
128
131
|
var e,
|
|
@@ -150,1849 +153,29 @@ function _iterableToArrayLimit$2(r, l) {
|
|
|
150
153
|
}
|
|
151
154
|
}
|
|
152
155
|
|
|
153
|
-
function _arrayLikeToArray
|
|
156
|
+
function _arrayLikeToArray(arr, len) {
|
|
154
157
|
if (len == null || len > arr.length) len = arr.length;
|
|
155
158
|
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
156
159
|
return arr2;
|
|
157
160
|
}
|
|
158
161
|
|
|
159
|
-
function _unsupportedIterableToArray
|
|
162
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
160
163
|
if (!o) return;
|
|
161
|
-
if (typeof o === "string") return _arrayLikeToArray
|
|
164
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
162
165
|
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
163
166
|
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
164
167
|
if (n === "Map" || n === "Set") return Array.from(o);
|
|
165
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray
|
|
168
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
166
169
|
}
|
|
167
170
|
|
|
168
|
-
function _nonIterableRest
|
|
171
|
+
function _nonIterableRest() {
|
|
169
172
|
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
170
173
|
}
|
|
171
174
|
|
|
172
|
-
function _slicedToArray
|
|
173
|
-
return _arrayWithHoles
|
|
175
|
+
function _slicedToArray(arr, i) {
|
|
176
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
174
177
|
}
|
|
175
178
|
|
|
176
|
-
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
177
|
-
|
|
178
|
-
function getDefaultExportFromCjs (x) {
|
|
179
|
-
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
function getAugmentedNamespace(n) {
|
|
183
|
-
if (n.__esModule) return n;
|
|
184
|
-
var f = n.default;
|
|
185
|
-
if (typeof f == "function") {
|
|
186
|
-
var a = function a () {
|
|
187
|
-
if (this instanceof a) {
|
|
188
|
-
return Reflect.construct(f, arguments, this.constructor);
|
|
189
|
-
}
|
|
190
|
-
return f.apply(this, arguments);
|
|
191
|
-
};
|
|
192
|
-
a.prototype = f.prototype;
|
|
193
|
-
} else a = {};
|
|
194
|
-
Object.defineProperty(a, '__esModule', {value: true});
|
|
195
|
-
Object.keys(n).forEach(function (k) {
|
|
196
|
-
var d = Object.getOwnPropertyDescriptor(n, k);
|
|
197
|
-
Object.defineProperty(a, k, d.get ? d : {
|
|
198
|
-
enumerable: true,
|
|
199
|
-
get: function () {
|
|
200
|
-
return n[k];
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
});
|
|
204
|
-
return a;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
var propTypes = {exports: {}};
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Copyright (c) 2013-present, Facebook, Inc.
|
|
211
|
-
*
|
|
212
|
-
* This source code is licensed under the MIT license found in the
|
|
213
|
-
* LICENSE file in the root directory of this source tree.
|
|
214
|
-
*/
|
|
215
|
-
|
|
216
|
-
var ReactPropTypesSecret$1 = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
|
|
217
|
-
|
|
218
|
-
var ReactPropTypesSecret_1 = ReactPropTypesSecret$1;
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Copyright (c) 2013-present, Facebook, Inc.
|
|
222
|
-
*
|
|
223
|
-
* This source code is licensed under the MIT license found in the
|
|
224
|
-
* LICENSE file in the root directory of this source tree.
|
|
225
|
-
*/
|
|
226
|
-
|
|
227
|
-
var ReactPropTypesSecret = ReactPropTypesSecret_1;
|
|
228
|
-
|
|
229
|
-
function emptyFunction() {}
|
|
230
|
-
function emptyFunctionWithReset() {}
|
|
231
|
-
emptyFunctionWithReset.resetWarningCache = emptyFunction;
|
|
232
|
-
|
|
233
|
-
var factoryWithThrowingShims = function() {
|
|
234
|
-
function shim(props, propName, componentName, location, propFullName, secret) {
|
|
235
|
-
if (secret === ReactPropTypesSecret) {
|
|
236
|
-
// It is still safe when called from React.
|
|
237
|
-
return;
|
|
238
|
-
}
|
|
239
|
-
var err = new Error(
|
|
240
|
-
'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
|
|
241
|
-
'Use PropTypes.checkPropTypes() to call them. ' +
|
|
242
|
-
'Read more at http://fb.me/use-check-prop-types'
|
|
243
|
-
);
|
|
244
|
-
err.name = 'Invariant Violation';
|
|
245
|
-
throw err;
|
|
246
|
-
} shim.isRequired = shim;
|
|
247
|
-
function getShim() {
|
|
248
|
-
return shim;
|
|
249
|
-
} // Important!
|
|
250
|
-
// Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
|
|
251
|
-
var ReactPropTypes = {
|
|
252
|
-
array: shim,
|
|
253
|
-
bigint: shim,
|
|
254
|
-
bool: shim,
|
|
255
|
-
func: shim,
|
|
256
|
-
number: shim,
|
|
257
|
-
object: shim,
|
|
258
|
-
string: shim,
|
|
259
|
-
symbol: shim,
|
|
260
|
-
|
|
261
|
-
any: shim,
|
|
262
|
-
arrayOf: getShim,
|
|
263
|
-
element: shim,
|
|
264
|
-
elementType: shim,
|
|
265
|
-
instanceOf: getShim,
|
|
266
|
-
node: shim,
|
|
267
|
-
objectOf: getShim,
|
|
268
|
-
oneOf: getShim,
|
|
269
|
-
oneOfType: getShim,
|
|
270
|
-
shape: getShim,
|
|
271
|
-
exact: getShim,
|
|
272
|
-
|
|
273
|
-
checkPropTypes: emptyFunctionWithReset,
|
|
274
|
-
resetWarningCache: emptyFunction
|
|
275
|
-
};
|
|
276
|
-
|
|
277
|
-
ReactPropTypes.PropTypes = ReactPropTypes;
|
|
278
|
-
|
|
279
|
-
return ReactPropTypes;
|
|
280
|
-
};
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Copyright (c) 2013-present, Facebook, Inc.
|
|
284
|
-
*
|
|
285
|
-
* This source code is licensed under the MIT license found in the
|
|
286
|
-
* LICENSE file in the root directory of this source tree.
|
|
287
|
-
*/
|
|
288
|
-
|
|
289
|
-
{
|
|
290
|
-
// By explicitly using `prop-types` you are opting into new production behavior.
|
|
291
|
-
// http://fb.me/prop-types-in-prod
|
|
292
|
-
propTypes.exports = factoryWithThrowingShims();
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
var propTypesExports = propTypes.exports;
|
|
296
|
-
var PropTypes = /*@__PURE__*/getDefaultExportFromCjs(propTypesExports);
|
|
297
|
-
|
|
298
|
-
/******************************************************************************
|
|
299
|
-
Copyright (c) Microsoft Corporation.
|
|
300
|
-
|
|
301
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
302
|
-
purpose with or without fee is hereby granted.
|
|
303
|
-
|
|
304
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
305
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
306
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
307
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
308
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
309
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
310
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
311
|
-
***************************************************************************** */
|
|
312
|
-
|
|
313
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
314
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
315
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
316
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
317
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
318
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
319
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
function __generator(thisArg, body) {
|
|
324
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
325
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
326
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
327
|
-
function step(op) {
|
|
328
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
329
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
330
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
331
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
332
|
-
switch (op[0]) {
|
|
333
|
-
case 0: case 1: t = op; break;
|
|
334
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
335
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
336
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
337
|
-
default:
|
|
338
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
339
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
340
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
341
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
342
|
-
if (t[2]) _.ops.pop();
|
|
343
|
-
_.trys.pop(); continue;
|
|
344
|
-
}
|
|
345
|
-
op = body.call(thisArg, _);
|
|
346
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
347
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
function __read(o, n) {
|
|
352
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
353
|
-
if (!m) return o;
|
|
354
|
-
var i = m.call(o), r, ar = [], e;
|
|
355
|
-
try {
|
|
356
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
357
|
-
}
|
|
358
|
-
catch (error) { e = { error: error }; }
|
|
359
|
-
finally {
|
|
360
|
-
try {
|
|
361
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
362
|
-
}
|
|
363
|
-
finally { if (e) throw e.error; }
|
|
364
|
-
}
|
|
365
|
-
return ar;
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
function __spreadArray(to, from, pack) {
|
|
369
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
370
|
-
if (ar || !(i in from)) {
|
|
371
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
372
|
-
ar[i] = from[i];
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
var COMMON_MIME_TYPES = new Map([
|
|
379
|
-
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
|
|
380
|
-
['aac', 'audio/aac'],
|
|
381
|
-
['abw', 'application/x-abiword'],
|
|
382
|
-
['arc', 'application/x-freearc'],
|
|
383
|
-
['avif', 'image/avif'],
|
|
384
|
-
['avi', 'video/x-msvideo'],
|
|
385
|
-
['azw', 'application/vnd.amazon.ebook'],
|
|
386
|
-
['bin', 'application/octet-stream'],
|
|
387
|
-
['bmp', 'image/bmp'],
|
|
388
|
-
['bz', 'application/x-bzip'],
|
|
389
|
-
['bz2', 'application/x-bzip2'],
|
|
390
|
-
['cda', 'application/x-cdf'],
|
|
391
|
-
['csh', 'application/x-csh'],
|
|
392
|
-
['css', 'text/css'],
|
|
393
|
-
['csv', 'text/csv'],
|
|
394
|
-
['doc', 'application/msword'],
|
|
395
|
-
['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],
|
|
396
|
-
['eot', 'application/vnd.ms-fontobject'],
|
|
397
|
-
['epub', 'application/epub+zip'],
|
|
398
|
-
['gz', 'application/gzip'],
|
|
399
|
-
['gif', 'image/gif'],
|
|
400
|
-
['heic', 'image/heic'],
|
|
401
|
-
['heif', 'image/heif'],
|
|
402
|
-
['htm', 'text/html'],
|
|
403
|
-
['html', 'text/html'],
|
|
404
|
-
['ico', 'image/vnd.microsoft.icon'],
|
|
405
|
-
['ics', 'text/calendar'],
|
|
406
|
-
['jar', 'application/java-archive'],
|
|
407
|
-
['jpeg', 'image/jpeg'],
|
|
408
|
-
['jpg', 'image/jpeg'],
|
|
409
|
-
['js', 'text/javascript'],
|
|
410
|
-
['json', 'application/json'],
|
|
411
|
-
['jsonld', 'application/ld+json'],
|
|
412
|
-
['mid', 'audio/midi'],
|
|
413
|
-
['midi', 'audio/midi'],
|
|
414
|
-
['mjs', 'text/javascript'],
|
|
415
|
-
['mp3', 'audio/mpeg'],
|
|
416
|
-
['mp4', 'video/mp4'],
|
|
417
|
-
['mpeg', 'video/mpeg'],
|
|
418
|
-
['mpkg', 'application/vnd.apple.installer+xml'],
|
|
419
|
-
['odp', 'application/vnd.oasis.opendocument.presentation'],
|
|
420
|
-
['ods', 'application/vnd.oasis.opendocument.spreadsheet'],
|
|
421
|
-
['odt', 'application/vnd.oasis.opendocument.text'],
|
|
422
|
-
['oga', 'audio/ogg'],
|
|
423
|
-
['ogv', 'video/ogg'],
|
|
424
|
-
['ogx', 'application/ogg'],
|
|
425
|
-
['opus', 'audio/opus'],
|
|
426
|
-
['otf', 'font/otf'],
|
|
427
|
-
['png', 'image/png'],
|
|
428
|
-
['pdf', 'application/pdf'],
|
|
429
|
-
['php', 'application/x-httpd-php'],
|
|
430
|
-
['ppt', 'application/vnd.ms-powerpoint'],
|
|
431
|
-
['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],
|
|
432
|
-
['rar', 'application/vnd.rar'],
|
|
433
|
-
['rtf', 'application/rtf'],
|
|
434
|
-
['sh', 'application/x-sh'],
|
|
435
|
-
['svg', 'image/svg+xml'],
|
|
436
|
-
['swf', 'application/x-shockwave-flash'],
|
|
437
|
-
['tar', 'application/x-tar'],
|
|
438
|
-
['tif', 'image/tiff'],
|
|
439
|
-
['tiff', 'image/tiff'],
|
|
440
|
-
['ts', 'video/mp2t'],
|
|
441
|
-
['ttf', 'font/ttf'],
|
|
442
|
-
['txt', 'text/plain'],
|
|
443
|
-
['vsd', 'application/vnd.visio'],
|
|
444
|
-
['wav', 'audio/wav'],
|
|
445
|
-
['weba', 'audio/webm'],
|
|
446
|
-
['webm', 'video/webm'],
|
|
447
|
-
['webp', 'image/webp'],
|
|
448
|
-
['woff', 'font/woff'],
|
|
449
|
-
['woff2', 'font/woff2'],
|
|
450
|
-
['xhtml', 'application/xhtml+xml'],
|
|
451
|
-
['xls', 'application/vnd.ms-excel'],
|
|
452
|
-
['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],
|
|
453
|
-
['xml', 'application/xml'],
|
|
454
|
-
['xul', 'application/vnd.mozilla.xul+xml'],
|
|
455
|
-
['zip', 'application/zip'],
|
|
456
|
-
['7z', 'application/x-7z-compressed'],
|
|
457
|
-
// Others
|
|
458
|
-
['mkv', 'video/x-matroska'],
|
|
459
|
-
['mov', 'video/quicktime'],
|
|
460
|
-
['msg', 'application/vnd.ms-outlook']
|
|
461
|
-
]);
|
|
462
|
-
function toFileWithPath(file, path) {
|
|
463
|
-
var f = withMimeType(file);
|
|
464
|
-
if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path
|
|
465
|
-
var webkitRelativePath = file.webkitRelativePath;
|
|
466
|
-
Object.defineProperty(f, 'path', {
|
|
467
|
-
value: typeof path === 'string'
|
|
468
|
-
? path
|
|
469
|
-
// If <input webkitdirectory> is set,
|
|
470
|
-
// the File will have a {webkitRelativePath} property
|
|
471
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory
|
|
472
|
-
: typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0
|
|
473
|
-
? webkitRelativePath
|
|
474
|
-
: file.name,
|
|
475
|
-
writable: false,
|
|
476
|
-
configurable: false,
|
|
477
|
-
enumerable: true
|
|
478
|
-
});
|
|
479
|
-
}
|
|
480
|
-
return f;
|
|
481
|
-
}
|
|
482
|
-
function withMimeType(file) {
|
|
483
|
-
var name = file.name;
|
|
484
|
-
var hasExtension = name && name.lastIndexOf('.') !== -1;
|
|
485
|
-
if (hasExtension && !file.type) {
|
|
486
|
-
var ext = name.split('.')
|
|
487
|
-
.pop().toLowerCase();
|
|
488
|
-
var type = COMMON_MIME_TYPES.get(ext);
|
|
489
|
-
if (type) {
|
|
490
|
-
Object.defineProperty(file, 'type', {
|
|
491
|
-
value: type,
|
|
492
|
-
writable: false,
|
|
493
|
-
configurable: false,
|
|
494
|
-
enumerable: true
|
|
495
|
-
});
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
return file;
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
var FILES_TO_IGNORE = [
|
|
502
|
-
// Thumbnail cache files for macOS and Windows
|
|
503
|
-
'.DS_Store',
|
|
504
|
-
'Thumbs.db' // Windows
|
|
505
|
-
];
|
|
506
|
-
/**
|
|
507
|
-
* Convert a DragEvent's DataTrasfer object to a list of File objects
|
|
508
|
-
* NOTE: If some of the items are folders,
|
|
509
|
-
* everything will be flattened and placed in the same list but the paths will be kept as a {path} property.
|
|
510
|
-
*
|
|
511
|
-
* EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg
|
|
512
|
-
* and a list of File objects will be returned.
|
|
513
|
-
*
|
|
514
|
-
* @param evt
|
|
515
|
-
*/
|
|
516
|
-
function fromEvent(evt) {
|
|
517
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
518
|
-
return __generator(this, function (_a) {
|
|
519
|
-
if (isObject(evt) && isDataTransfer(evt.dataTransfer)) {
|
|
520
|
-
return [2 /*return*/, getDataTransferFiles(evt.dataTransfer, evt.type)];
|
|
521
|
-
}
|
|
522
|
-
else if (isChangeEvt(evt)) {
|
|
523
|
-
return [2 /*return*/, getInputFiles(evt)];
|
|
524
|
-
}
|
|
525
|
-
else if (Array.isArray(evt) && evt.every(function (item) { return 'getFile' in item && typeof item.getFile === 'function'; })) {
|
|
526
|
-
return [2 /*return*/, getFsHandleFiles(evt)];
|
|
527
|
-
}
|
|
528
|
-
return [2 /*return*/, []];
|
|
529
|
-
});
|
|
530
|
-
});
|
|
531
|
-
}
|
|
532
|
-
function isDataTransfer(value) {
|
|
533
|
-
return isObject(value);
|
|
534
|
-
}
|
|
535
|
-
function isChangeEvt(value) {
|
|
536
|
-
return isObject(value) && isObject(value.target);
|
|
537
|
-
}
|
|
538
|
-
function isObject(v) {
|
|
539
|
-
return typeof v === 'object' && v !== null;
|
|
540
|
-
}
|
|
541
|
-
function getInputFiles(evt) {
|
|
542
|
-
return fromList(evt.target.files).map(function (file) { return toFileWithPath(file); });
|
|
543
|
-
}
|
|
544
|
-
// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle
|
|
545
|
-
function getFsHandleFiles(handles) {
|
|
546
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
547
|
-
var files;
|
|
548
|
-
return __generator(this, function (_a) {
|
|
549
|
-
switch (_a.label) {
|
|
550
|
-
case 0: return [4 /*yield*/, Promise.all(handles.map(function (h) { return h.getFile(); }))];
|
|
551
|
-
case 1:
|
|
552
|
-
files = _a.sent();
|
|
553
|
-
return [2 /*return*/, files.map(function (file) { return toFileWithPath(file); })];
|
|
554
|
-
}
|
|
555
|
-
});
|
|
556
|
-
});
|
|
557
|
-
}
|
|
558
|
-
function getDataTransferFiles(dt, type) {
|
|
559
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
560
|
-
var items, files;
|
|
561
|
-
return __generator(this, function (_a) {
|
|
562
|
-
switch (_a.label) {
|
|
563
|
-
case 0:
|
|
564
|
-
if (!dt.items) return [3 /*break*/, 2];
|
|
565
|
-
items = fromList(dt.items)
|
|
566
|
-
.filter(function (item) { return item.kind === 'file'; });
|
|
567
|
-
// According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,
|
|
568
|
-
// only 'dragstart' and 'drop' has access to the data (source node)
|
|
569
|
-
if (type !== 'drop') {
|
|
570
|
-
return [2 /*return*/, items];
|
|
571
|
-
}
|
|
572
|
-
return [4 /*yield*/, Promise.all(items.map(toFilePromises))];
|
|
573
|
-
case 1:
|
|
574
|
-
files = _a.sent();
|
|
575
|
-
return [2 /*return*/, noIgnoredFiles(flatten(files))];
|
|
576
|
-
case 2: return [2 /*return*/, noIgnoredFiles(fromList(dt.files)
|
|
577
|
-
.map(function (file) { return toFileWithPath(file); }))];
|
|
578
|
-
}
|
|
579
|
-
});
|
|
580
|
-
});
|
|
581
|
-
}
|
|
582
|
-
function noIgnoredFiles(files) {
|
|
583
|
-
return files.filter(function (file) { return FILES_TO_IGNORE.indexOf(file.name) === -1; });
|
|
584
|
-
}
|
|
585
|
-
// IE11 does not support Array.from()
|
|
586
|
-
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility
|
|
587
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/FileList
|
|
588
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList
|
|
589
|
-
function fromList(items) {
|
|
590
|
-
if (items === null) {
|
|
591
|
-
return [];
|
|
592
|
-
}
|
|
593
|
-
var files = [];
|
|
594
|
-
// tslint:disable: prefer-for-of
|
|
595
|
-
for (var i = 0; i < items.length; i++) {
|
|
596
|
-
var file = items[i];
|
|
597
|
-
files.push(file);
|
|
598
|
-
}
|
|
599
|
-
return files;
|
|
600
|
-
}
|
|
601
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem
|
|
602
|
-
function toFilePromises(item) {
|
|
603
|
-
if (typeof item.webkitGetAsEntry !== 'function') {
|
|
604
|
-
return fromDataTransferItem(item);
|
|
605
|
-
}
|
|
606
|
-
var entry = item.webkitGetAsEntry();
|
|
607
|
-
// Safari supports dropping an image node from a different window and can be retrieved using
|
|
608
|
-
// the DataTransferItem.getAsFile() API
|
|
609
|
-
// NOTE: FileSystemEntry.file() throws if trying to get the file
|
|
610
|
-
if (entry && entry.isDirectory) {
|
|
611
|
-
return fromDirEntry(entry);
|
|
612
|
-
}
|
|
613
|
-
return fromDataTransferItem(item);
|
|
614
|
-
}
|
|
615
|
-
function flatten(items) {
|
|
616
|
-
return items.reduce(function (acc, files) { return __spreadArray(__spreadArray([], __read(acc), false), __read((Array.isArray(files) ? flatten(files) : [files])), false); }, []);
|
|
617
|
-
}
|
|
618
|
-
function fromDataTransferItem(item) {
|
|
619
|
-
var file = item.getAsFile();
|
|
620
|
-
if (!file) {
|
|
621
|
-
return Promise.reject("".concat(item, " is not a File"));
|
|
622
|
-
}
|
|
623
|
-
var fwp = toFileWithPath(file);
|
|
624
|
-
return Promise.resolve(fwp);
|
|
625
|
-
}
|
|
626
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry
|
|
627
|
-
function fromEntry(entry) {
|
|
628
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
629
|
-
return __generator(this, function (_a) {
|
|
630
|
-
return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];
|
|
631
|
-
});
|
|
632
|
-
});
|
|
633
|
-
}
|
|
634
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry
|
|
635
|
-
function fromDirEntry(entry) {
|
|
636
|
-
var reader = entry.createReader();
|
|
637
|
-
return new Promise(function (resolve, reject) {
|
|
638
|
-
var entries = [];
|
|
639
|
-
function readEntries() {
|
|
640
|
-
var _this = this;
|
|
641
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader
|
|
642
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries
|
|
643
|
-
reader.readEntries(function (batch) { return __awaiter(_this, void 0, void 0, function () {
|
|
644
|
-
var files, err_1, items;
|
|
645
|
-
return __generator(this, function (_a) {
|
|
646
|
-
switch (_a.label) {
|
|
647
|
-
case 0:
|
|
648
|
-
if (!!batch.length) return [3 /*break*/, 5];
|
|
649
|
-
_a.label = 1;
|
|
650
|
-
case 1:
|
|
651
|
-
_a.trys.push([1, 3, , 4]);
|
|
652
|
-
return [4 /*yield*/, Promise.all(entries)];
|
|
653
|
-
case 2:
|
|
654
|
-
files = _a.sent();
|
|
655
|
-
resolve(files);
|
|
656
|
-
return [3 /*break*/, 4];
|
|
657
|
-
case 3:
|
|
658
|
-
err_1 = _a.sent();
|
|
659
|
-
reject(err_1);
|
|
660
|
-
return [3 /*break*/, 4];
|
|
661
|
-
case 4: return [3 /*break*/, 6];
|
|
662
|
-
case 5:
|
|
663
|
-
items = Promise.all(batch.map(fromEntry));
|
|
664
|
-
entries.push(items);
|
|
665
|
-
// Continue reading
|
|
666
|
-
readEntries();
|
|
667
|
-
_a.label = 6;
|
|
668
|
-
case 6: return [2 /*return*/];
|
|
669
|
-
}
|
|
670
|
-
});
|
|
671
|
-
}); }, function (err) {
|
|
672
|
-
reject(err);
|
|
673
|
-
});
|
|
674
|
-
}
|
|
675
|
-
readEntries();
|
|
676
|
-
});
|
|
677
|
-
}
|
|
678
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry
|
|
679
|
-
function fromFileEntry(entry) {
|
|
680
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
681
|
-
return __generator(this, function (_a) {
|
|
682
|
-
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
683
|
-
entry.file(function (file) {
|
|
684
|
-
var fwp = toFileWithPath(file, entry.fullPath);
|
|
685
|
-
resolve(fwp);
|
|
686
|
-
}, function (err) {
|
|
687
|
-
reject(err);
|
|
688
|
-
});
|
|
689
|
-
})];
|
|
690
|
-
});
|
|
691
|
-
});
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
var _default$1 = function (file, acceptedFiles) {
|
|
695
|
-
if (file && acceptedFiles) {
|
|
696
|
-
var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');
|
|
697
|
-
var fileName = file.name || '';
|
|
698
|
-
var mimeType = (file.type || '').toLowerCase();
|
|
699
|
-
var baseMimeType = mimeType.replace(/\/.*$/, '');
|
|
700
|
-
return acceptedFilesArray.some(function (type) {
|
|
701
|
-
var validType = type.trim().toLowerCase();
|
|
702
|
-
|
|
703
|
-
if (validType.charAt(0) === '.') {
|
|
704
|
-
return fileName.toLowerCase().endsWith(validType);
|
|
705
|
-
} else if (validType.endsWith('/*')) {
|
|
706
|
-
// This is something like a image/* mime type
|
|
707
|
-
return baseMimeType === validType.replace(/\/.*$/, '');
|
|
708
|
-
}
|
|
709
|
-
|
|
710
|
-
return mimeType === validType;
|
|
711
|
-
});
|
|
712
|
-
}
|
|
713
|
-
|
|
714
|
-
return true;
|
|
715
|
-
};
|
|
716
|
-
|
|
717
|
-
function _toConsumableArray$1(arr) { return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread$1(); }
|
|
718
|
-
|
|
719
|
-
function _nonIterableSpread$1() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
720
|
-
|
|
721
|
-
function _iterableToArray$1(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
722
|
-
|
|
723
|
-
function _arrayWithoutHoles$1(arr) { if (Array.isArray(arr)) return _arrayLikeToArray$1(arr); }
|
|
724
|
-
|
|
725
|
-
function ownKeys$c(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
726
|
-
|
|
727
|
-
function _objectSpread$b(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$c(Object(source), !0).forEach(function (key) { _defineProperty$2(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$c(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
728
|
-
|
|
729
|
-
function _defineProperty$2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
730
|
-
|
|
731
|
-
function _slicedToArray$1(arr, i) { return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest$1(); }
|
|
732
|
-
|
|
733
|
-
function _nonIterableRest$1() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
734
|
-
|
|
735
|
-
function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
|
|
736
|
-
|
|
737
|
-
function _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
738
|
-
|
|
739
|
-
function _iterableToArrayLimit$1(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
740
|
-
|
|
741
|
-
function _arrayWithHoles$1(arr) { if (Array.isArray(arr)) return arr; }
|
|
742
|
-
|
|
743
|
-
var FILE_INVALID_TYPE = "file-invalid-type";
|
|
744
|
-
var FILE_TOO_LARGE = "file-too-large";
|
|
745
|
-
var FILE_TOO_SMALL = "file-too-small";
|
|
746
|
-
var TOO_MANY_FILES = "too-many-files";
|
|
747
|
-
|
|
748
|
-
var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {
|
|
749
|
-
accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;
|
|
750
|
-
var messageSuffix = Array.isArray(accept) ? "one of ".concat(accept.join(", ")) : accept;
|
|
751
|
-
return {
|
|
752
|
-
code: FILE_INVALID_TYPE,
|
|
753
|
-
message: "File type must be ".concat(messageSuffix)
|
|
754
|
-
};
|
|
755
|
-
};
|
|
756
|
-
var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {
|
|
757
|
-
return {
|
|
758
|
-
code: FILE_TOO_LARGE,
|
|
759
|
-
message: "File is larger than ".concat(maxSize, " ").concat(maxSize === 1 ? "byte" : "bytes")
|
|
760
|
-
};
|
|
761
|
-
};
|
|
762
|
-
var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {
|
|
763
|
-
return {
|
|
764
|
-
code: FILE_TOO_SMALL,
|
|
765
|
-
message: "File is smaller than ".concat(minSize, " ").concat(minSize === 1 ? "byte" : "bytes")
|
|
766
|
-
};
|
|
767
|
-
};
|
|
768
|
-
var TOO_MANY_FILES_REJECTION = {
|
|
769
|
-
code: TOO_MANY_FILES,
|
|
770
|
-
message: "Too many files"
|
|
771
|
-
}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with
|
|
772
|
-
// that MIME type will always be accepted
|
|
773
|
-
|
|
774
|
-
function fileAccepted(file, accept) {
|
|
775
|
-
var isAcceptable = file.type === "application/x-moz-file" || _default$1(file, accept);
|
|
776
|
-
return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];
|
|
777
|
-
}
|
|
778
|
-
function fileMatchSize(file, minSize, maxSize) {
|
|
779
|
-
if (isDefined(file.size)) {
|
|
780
|
-
if (isDefined(minSize) && isDefined(maxSize)) {
|
|
781
|
-
if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];
|
|
782
|
-
if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];
|
|
783
|
-
} else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];
|
|
784
|
-
}
|
|
785
|
-
|
|
786
|
-
return [true, null];
|
|
787
|
-
}
|
|
788
|
-
|
|
789
|
-
function isDefined(value) {
|
|
790
|
-
return value !== undefined && value !== null;
|
|
791
|
-
}
|
|
792
|
-
/**
|
|
793
|
-
*
|
|
794
|
-
* @param {object} options
|
|
795
|
-
* @param {File[]} options.files
|
|
796
|
-
* @param {string|string[]} [options.accept]
|
|
797
|
-
* @param {number} [options.minSize]
|
|
798
|
-
* @param {number} [options.maxSize]
|
|
799
|
-
* @param {boolean} [options.multiple]
|
|
800
|
-
* @param {number} [options.maxFiles]
|
|
801
|
-
* @param {(f: File) => FileError|FileError[]|null} [options.validator]
|
|
802
|
-
* @returns
|
|
803
|
-
*/
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
function allFilesAccepted(_ref) {
|
|
807
|
-
var files = _ref.files,
|
|
808
|
-
accept = _ref.accept,
|
|
809
|
-
minSize = _ref.minSize,
|
|
810
|
-
maxSize = _ref.maxSize,
|
|
811
|
-
multiple = _ref.multiple,
|
|
812
|
-
maxFiles = _ref.maxFiles,
|
|
813
|
-
validator = _ref.validator;
|
|
814
|
-
|
|
815
|
-
if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {
|
|
816
|
-
return false;
|
|
817
|
-
}
|
|
818
|
-
|
|
819
|
-
return files.every(function (file) {
|
|
820
|
-
var _fileAccepted = fileAccepted(file, accept),
|
|
821
|
-
_fileAccepted2 = _slicedToArray$1(_fileAccepted, 1),
|
|
822
|
-
accepted = _fileAccepted2[0];
|
|
823
|
-
|
|
824
|
-
var _fileMatchSize = fileMatchSize(file, minSize, maxSize),
|
|
825
|
-
_fileMatchSize2 = _slicedToArray$1(_fileMatchSize, 1),
|
|
826
|
-
sizeMatch = _fileMatchSize2[0];
|
|
827
|
-
|
|
828
|
-
var customErrors = validator ? validator(file) : null;
|
|
829
|
-
return accepted && sizeMatch && !customErrors;
|
|
830
|
-
});
|
|
831
|
-
} // React's synthetic events has event.isPropagationStopped,
|
|
832
|
-
// but to remain compatibility with other libs (Preact) fall back
|
|
833
|
-
// to check event.cancelBubble
|
|
834
|
-
|
|
835
|
-
function isPropagationStopped(event) {
|
|
836
|
-
if (typeof event.isPropagationStopped === "function") {
|
|
837
|
-
return event.isPropagationStopped();
|
|
838
|
-
} else if (typeof event.cancelBubble !== "undefined") {
|
|
839
|
-
return event.cancelBubble;
|
|
840
|
-
}
|
|
841
|
-
|
|
842
|
-
return false;
|
|
843
|
-
}
|
|
844
|
-
function isEvtWithFiles(event) {
|
|
845
|
-
if (!event.dataTransfer) {
|
|
846
|
-
return !!event.target && !!event.target.files;
|
|
847
|
-
} // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types
|
|
848
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
return Array.prototype.some.call(event.dataTransfer.types, function (type) {
|
|
852
|
-
return type === "Files" || type === "application/x-moz-file";
|
|
853
|
-
});
|
|
854
|
-
}
|
|
855
|
-
|
|
856
|
-
function onDocumentDragOver(event) {
|
|
857
|
-
event.preventDefault();
|
|
858
|
-
}
|
|
859
|
-
|
|
860
|
-
function isIe(userAgent) {
|
|
861
|
-
return userAgent.indexOf("MSIE") !== -1 || userAgent.indexOf("Trident/") !== -1;
|
|
862
|
-
}
|
|
863
|
-
|
|
864
|
-
function isEdge(userAgent) {
|
|
865
|
-
return userAgent.indexOf("Edge/") !== -1;
|
|
866
|
-
}
|
|
867
|
-
|
|
868
|
-
function isIeOrEdge() {
|
|
869
|
-
var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;
|
|
870
|
-
return isIe(userAgent) || isEdge(userAgent);
|
|
871
|
-
}
|
|
872
|
-
/**
|
|
873
|
-
* This is intended to be used to compose event handlers
|
|
874
|
-
* They are executed in order until one of them calls `event.isPropagationStopped()`.
|
|
875
|
-
* Note that the check is done on the first invoke too,
|
|
876
|
-
* meaning that if propagation was stopped before invoking the fns,
|
|
877
|
-
* no handlers will be executed.
|
|
878
|
-
*
|
|
879
|
-
* @param {Function} fns the event hanlder functions
|
|
880
|
-
* @return {Function} the event handler to add to an element
|
|
881
|
-
*/
|
|
882
|
-
|
|
883
|
-
function composeEventHandlers() {
|
|
884
|
-
for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
885
|
-
fns[_key] = arguments[_key];
|
|
886
|
-
}
|
|
887
|
-
|
|
888
|
-
return function (event) {
|
|
889
|
-
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
890
|
-
args[_key2 - 1] = arguments[_key2];
|
|
891
|
-
}
|
|
892
|
-
|
|
893
|
-
return fns.some(function (fn) {
|
|
894
|
-
if (!isPropagationStopped(event) && fn) {
|
|
895
|
-
fn.apply(void 0, [event].concat(args));
|
|
896
|
-
}
|
|
897
|
-
|
|
898
|
-
return isPropagationStopped(event);
|
|
899
|
-
});
|
|
900
|
-
};
|
|
901
|
-
}
|
|
902
|
-
/**
|
|
903
|
-
* canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)
|
|
904
|
-
* is supported by the browser.
|
|
905
|
-
* @returns {boolean}
|
|
906
|
-
*/
|
|
907
|
-
|
|
908
|
-
function canUseFileSystemAccessAPI() {
|
|
909
|
-
return "showOpenFilePicker" in window;
|
|
910
|
-
}
|
|
911
|
-
/**
|
|
912
|
-
* Convert the `{accept}` dropzone prop to the
|
|
913
|
-
* `{types}` option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker
|
|
914
|
-
*
|
|
915
|
-
* @param {AcceptProp} accept
|
|
916
|
-
* @returns {{accept: string[]}[]}
|
|
917
|
-
*/
|
|
918
|
-
|
|
919
|
-
function pickerOptionsFromAccept(accept) {
|
|
920
|
-
if (isDefined(accept)) {
|
|
921
|
-
var acceptForPicker = Object.entries(accept).filter(function (_ref2) {
|
|
922
|
-
var _ref3 = _slicedToArray$1(_ref2, 2),
|
|
923
|
-
mimeType = _ref3[0],
|
|
924
|
-
ext = _ref3[1];
|
|
925
|
-
|
|
926
|
-
var ok = true;
|
|
927
|
-
|
|
928
|
-
if (!isMIMEType(mimeType)) {
|
|
929
|
-
console.warn("Skipped \"".concat(mimeType, "\" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types."));
|
|
930
|
-
ok = false;
|
|
931
|
-
}
|
|
932
|
-
|
|
933
|
-
if (!Array.isArray(ext) || !ext.every(isExt)) {
|
|
934
|
-
console.warn("Skipped \"".concat(mimeType, "\" because an invalid file extension was provided."));
|
|
935
|
-
ok = false;
|
|
936
|
-
}
|
|
937
|
-
|
|
938
|
-
return ok;
|
|
939
|
-
}).reduce(function (agg, _ref4) {
|
|
940
|
-
var _ref5 = _slicedToArray$1(_ref4, 2),
|
|
941
|
-
mimeType = _ref5[0],
|
|
942
|
-
ext = _ref5[1];
|
|
943
|
-
|
|
944
|
-
return _objectSpread$b(_objectSpread$b({}, agg), {}, _defineProperty$2({}, mimeType, ext));
|
|
945
|
-
}, {});
|
|
946
|
-
return [{
|
|
947
|
-
// description is required due to https://crbug.com/1264708
|
|
948
|
-
description: "Files",
|
|
949
|
-
accept: acceptForPicker
|
|
950
|
-
}];
|
|
951
|
-
}
|
|
952
|
-
|
|
953
|
-
return accept;
|
|
954
|
-
}
|
|
955
|
-
/**
|
|
956
|
-
* Convert the `{accept}` dropzone prop to an array of MIME types/extensions.
|
|
957
|
-
* @param {AcceptProp} accept
|
|
958
|
-
* @returns {string}
|
|
959
|
-
*/
|
|
960
|
-
|
|
961
|
-
function acceptPropAsAcceptAttr(accept) {
|
|
962
|
-
if (isDefined(accept)) {
|
|
963
|
-
return Object.entries(accept).reduce(function (a, _ref6) {
|
|
964
|
-
var _ref7 = _slicedToArray$1(_ref6, 2),
|
|
965
|
-
mimeType = _ref7[0],
|
|
966
|
-
ext = _ref7[1];
|
|
967
|
-
|
|
968
|
-
return [].concat(_toConsumableArray$1(a), [mimeType], _toConsumableArray$1(ext));
|
|
969
|
-
}, []) // Silently discard invalid entries as pickerOptionsFromAccept warns about these
|
|
970
|
-
.filter(function (v) {
|
|
971
|
-
return isMIMEType(v) || isExt(v);
|
|
972
|
-
}).join(",");
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
return undefined;
|
|
976
|
-
}
|
|
977
|
-
/**
|
|
978
|
-
* Check if v is an exception caused by aborting a request (e.g window.showOpenFilePicker()).
|
|
979
|
-
*
|
|
980
|
-
* See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.
|
|
981
|
-
* @param {any} v
|
|
982
|
-
* @returns {boolean} True if v is an abort exception.
|
|
983
|
-
*/
|
|
984
|
-
|
|
985
|
-
function isAbort(v) {
|
|
986
|
-
return v instanceof DOMException && (v.name === "AbortError" || v.code === v.ABORT_ERR);
|
|
987
|
-
}
|
|
988
|
-
/**
|
|
989
|
-
* Check if v is a security error.
|
|
990
|
-
*
|
|
991
|
-
* See https://developer.mozilla.org/en-US/docs/Web/API/DOMException.
|
|
992
|
-
* @param {any} v
|
|
993
|
-
* @returns {boolean} True if v is a security error.
|
|
994
|
-
*/
|
|
995
|
-
|
|
996
|
-
function isSecurityError(v) {
|
|
997
|
-
return v instanceof DOMException && (v.name === "SecurityError" || v.code === v.SECURITY_ERR);
|
|
998
|
-
}
|
|
999
|
-
/**
|
|
1000
|
-
* Check if v is a MIME type string.
|
|
1001
|
-
*
|
|
1002
|
-
* See accepted format: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers.
|
|
1003
|
-
*
|
|
1004
|
-
* @param {string} v
|
|
1005
|
-
*/
|
|
1006
|
-
|
|
1007
|
-
function isMIMEType(v) {
|
|
1008
|
-
return v === "audio/*" || v === "video/*" || v === "image/*" || v === "text/*" || /\w+\/[-+.\w]+/g.test(v);
|
|
1009
|
-
}
|
|
1010
|
-
/**
|
|
1011
|
-
* Check if v is a file extension.
|
|
1012
|
-
* @param {string} v
|
|
1013
|
-
*/
|
|
1014
|
-
|
|
1015
|
-
function isExt(v) {
|
|
1016
|
-
return /^.*\.[\w]+$/.test(v);
|
|
1017
|
-
}
|
|
1018
|
-
/**
|
|
1019
|
-
* @typedef {Object.<string, string[]>} AcceptProp
|
|
1020
|
-
*/
|
|
1021
|
-
|
|
1022
|
-
/**
|
|
1023
|
-
* @typedef {object} FileError
|
|
1024
|
-
* @property {string} message
|
|
1025
|
-
* @property {ErrorCode|string} code
|
|
1026
|
-
*/
|
|
1027
|
-
|
|
1028
|
-
/**
|
|
1029
|
-
* @typedef {"file-invalid-type"|"file-too-large"|"file-too-small"|"too-many-files"} ErrorCode
|
|
1030
|
-
*/
|
|
1031
|
-
|
|
1032
|
-
var _excluded$5 = ["children"],
|
|
1033
|
-
_excluded2 = ["open"],
|
|
1034
|
-
_excluded3 = ["refKey", "role", "onKeyDown", "onFocus", "onBlur", "onClick", "onDragEnter", "onDragOver", "onDragLeave", "onDrop"],
|
|
1035
|
-
_excluded4 = ["refKey", "onChange", "onClick"];
|
|
1036
|
-
|
|
1037
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
1038
|
-
|
|
1039
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
1040
|
-
|
|
1041
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
1042
|
-
|
|
1043
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
1044
|
-
|
|
1045
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
1046
|
-
|
|
1047
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
1048
|
-
|
|
1049
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
1050
|
-
|
|
1051
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
1052
|
-
|
|
1053
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
1054
|
-
|
|
1055
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
1056
|
-
|
|
1057
|
-
function ownKeys$b(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
1058
|
-
|
|
1059
|
-
function _objectSpread$a(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$b(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$b(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
1060
|
-
|
|
1061
|
-
function _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
1062
|
-
|
|
1063
|
-
function _objectWithoutProperties$1(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
1064
|
-
|
|
1065
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
1066
|
-
/**
|
|
1067
|
-
* Convenience wrapper component for the `useDropzone` hook
|
|
1068
|
-
*
|
|
1069
|
-
* ```jsx
|
|
1070
|
-
* <Dropzone>
|
|
1071
|
-
* {({getRootProps, getInputProps}) => (
|
|
1072
|
-
* <div {...getRootProps()}>
|
|
1073
|
-
* <input {...getInputProps()} />
|
|
1074
|
-
* <p>Drag 'n' drop some files here, or click to select files</p>
|
|
1075
|
-
* </div>
|
|
1076
|
-
* )}
|
|
1077
|
-
* </Dropzone>
|
|
1078
|
-
* ```
|
|
1079
|
-
*/
|
|
1080
|
-
|
|
1081
|
-
var Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
1082
|
-
var children = _ref.children,
|
|
1083
|
-
params = _objectWithoutProperties$1(_ref, _excluded$5);
|
|
1084
|
-
|
|
1085
|
-
var _useDropzone = useDropzone(params),
|
|
1086
|
-
open = _useDropzone.open,
|
|
1087
|
-
props = _objectWithoutProperties$1(_useDropzone, _excluded2);
|
|
1088
|
-
|
|
1089
|
-
useImperativeHandle(ref, function () {
|
|
1090
|
-
return {
|
|
1091
|
-
open: open
|
|
1092
|
-
};
|
|
1093
|
-
}, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element
|
|
1094
|
-
|
|
1095
|
-
return /*#__PURE__*/require$$0.createElement(Fragment, null, children(_objectSpread$a(_objectSpread$a({}, props), {}, {
|
|
1096
|
-
open: open
|
|
1097
|
-
})));
|
|
1098
|
-
});
|
|
1099
|
-
Dropzone.displayName = "Dropzone"; // Add default props for react-docgen
|
|
1100
|
-
|
|
1101
|
-
var defaultProps = {
|
|
1102
|
-
disabled: false,
|
|
1103
|
-
getFilesFromEvent: fromEvent,
|
|
1104
|
-
maxSize: Infinity,
|
|
1105
|
-
minSize: 0,
|
|
1106
|
-
multiple: true,
|
|
1107
|
-
maxFiles: 0,
|
|
1108
|
-
preventDropOnDocument: true,
|
|
1109
|
-
noClick: false,
|
|
1110
|
-
noKeyboard: false,
|
|
1111
|
-
noDrag: false,
|
|
1112
|
-
noDragEventsBubbling: false,
|
|
1113
|
-
validator: null,
|
|
1114
|
-
useFsAccessApi: true,
|
|
1115
|
-
autoFocus: false
|
|
1116
|
-
};
|
|
1117
|
-
Dropzone.defaultProps = defaultProps;
|
|
1118
|
-
Dropzone.propTypes = {
|
|
1119
|
-
/**
|
|
1120
|
-
* Render function that exposes the dropzone state and prop getter fns
|
|
1121
|
-
*
|
|
1122
|
-
* @param {object} params
|
|
1123
|
-
* @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render
|
|
1124
|
-
* @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render
|
|
1125
|
-
* @param {Function} params.open Open the native file selection dialog
|
|
1126
|
-
* @param {boolean} params.isFocused Dropzone area is in focus
|
|
1127
|
-
* @param {boolean} params.isFileDialogActive File dialog is opened
|
|
1128
|
-
* @param {boolean} params.isDragActive Active drag is in progress
|
|
1129
|
-
* @param {boolean} params.isDragAccept Dragged files are accepted
|
|
1130
|
-
* @param {boolean} params.isDragReject Some dragged files are rejected
|
|
1131
|
-
* @param {File[]} params.acceptedFiles Accepted files
|
|
1132
|
-
* @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected
|
|
1133
|
-
*/
|
|
1134
|
-
children: PropTypes.func,
|
|
1135
|
-
|
|
1136
|
-
/**
|
|
1137
|
-
* Set accepted file types.
|
|
1138
|
-
* Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.
|
|
1139
|
-
* Keep in mind that mime type determination is not reliable across platforms. CSV files,
|
|
1140
|
-
* for example, are reported as text/plain under macOS but as application/vnd.ms-excel under
|
|
1141
|
-
* Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).
|
|
1142
|
-
*/
|
|
1143
|
-
accept: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)),
|
|
1144
|
-
|
|
1145
|
-
/**
|
|
1146
|
-
* Allow drag 'n' drop (or selection from the file dialog) of multiple files
|
|
1147
|
-
*/
|
|
1148
|
-
multiple: PropTypes.bool,
|
|
1149
|
-
|
|
1150
|
-
/**
|
|
1151
|
-
* If false, allow dropped items to take over the current browser window
|
|
1152
|
-
*/
|
|
1153
|
-
preventDropOnDocument: PropTypes.bool,
|
|
1154
|
-
|
|
1155
|
-
/**
|
|
1156
|
-
* If true, disables click to open the native file selection dialog
|
|
1157
|
-
*/
|
|
1158
|
-
noClick: PropTypes.bool,
|
|
1159
|
-
|
|
1160
|
-
/**
|
|
1161
|
-
* If true, disables SPACE/ENTER to open the native file selection dialog.
|
|
1162
|
-
* Note that it also stops tracking the focus state.
|
|
1163
|
-
*/
|
|
1164
|
-
noKeyboard: PropTypes.bool,
|
|
1165
|
-
|
|
1166
|
-
/**
|
|
1167
|
-
* If true, disables drag 'n' drop
|
|
1168
|
-
*/
|
|
1169
|
-
noDrag: PropTypes.bool,
|
|
1170
|
-
|
|
1171
|
-
/**
|
|
1172
|
-
* If true, stops drag event propagation to parents
|
|
1173
|
-
*/
|
|
1174
|
-
noDragEventsBubbling: PropTypes.bool,
|
|
1175
|
-
|
|
1176
|
-
/**
|
|
1177
|
-
* Minimum file size (in bytes)
|
|
1178
|
-
*/
|
|
1179
|
-
minSize: PropTypes.number,
|
|
1180
|
-
|
|
1181
|
-
/**
|
|
1182
|
-
* Maximum file size (in bytes)
|
|
1183
|
-
*/
|
|
1184
|
-
maxSize: PropTypes.number,
|
|
1185
|
-
|
|
1186
|
-
/**
|
|
1187
|
-
* Maximum accepted number of files
|
|
1188
|
-
* The default value is 0 which means there is no limitation to how many files are accepted.
|
|
1189
|
-
*/
|
|
1190
|
-
maxFiles: PropTypes.number,
|
|
1191
|
-
|
|
1192
|
-
/**
|
|
1193
|
-
* Enable/disable the dropzone
|
|
1194
|
-
*/
|
|
1195
|
-
disabled: PropTypes.bool,
|
|
1196
|
-
|
|
1197
|
-
/**
|
|
1198
|
-
* Use this to provide a custom file aggregator
|
|
1199
|
-
*
|
|
1200
|
-
* @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)
|
|
1201
|
-
*/
|
|
1202
|
-
getFilesFromEvent: PropTypes.func,
|
|
1203
|
-
|
|
1204
|
-
/**
|
|
1205
|
-
* Cb for when closing the file dialog with no selection
|
|
1206
|
-
*/
|
|
1207
|
-
onFileDialogCancel: PropTypes.func,
|
|
1208
|
-
|
|
1209
|
-
/**
|
|
1210
|
-
* Cb for when opening the file dialog
|
|
1211
|
-
*/
|
|
1212
|
-
onFileDialogOpen: PropTypes.func,
|
|
1213
|
-
|
|
1214
|
-
/**
|
|
1215
|
-
* Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API
|
|
1216
|
-
* to open the file picker instead of using an `<input type="file">` click event.
|
|
1217
|
-
*/
|
|
1218
|
-
useFsAccessApi: PropTypes.bool,
|
|
1219
|
-
|
|
1220
|
-
/**
|
|
1221
|
-
* Set to true to focus the root element on render
|
|
1222
|
-
*/
|
|
1223
|
-
autoFocus: PropTypes.bool,
|
|
1224
|
-
|
|
1225
|
-
/**
|
|
1226
|
-
* Cb for when the `dragenter` event occurs.
|
|
1227
|
-
*
|
|
1228
|
-
* @param {DragEvent} event
|
|
1229
|
-
*/
|
|
1230
|
-
onDragEnter: PropTypes.func,
|
|
1231
|
-
|
|
1232
|
-
/**
|
|
1233
|
-
* Cb for when the `dragleave` event occurs
|
|
1234
|
-
*
|
|
1235
|
-
* @param {DragEvent} event
|
|
1236
|
-
*/
|
|
1237
|
-
onDragLeave: PropTypes.func,
|
|
1238
|
-
|
|
1239
|
-
/**
|
|
1240
|
-
* Cb for when the `dragover` event occurs
|
|
1241
|
-
*
|
|
1242
|
-
* @param {DragEvent} event
|
|
1243
|
-
*/
|
|
1244
|
-
onDragOver: PropTypes.func,
|
|
1245
|
-
|
|
1246
|
-
/**
|
|
1247
|
-
* Cb for when the `drop` event occurs.
|
|
1248
|
-
* Note that this callback is invoked after the `getFilesFromEvent` callback is done.
|
|
1249
|
-
*
|
|
1250
|
-
* Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.
|
|
1251
|
-
* `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.
|
|
1252
|
-
* If `multiple` is set to false and additional files are dropped,
|
|
1253
|
-
* all files besides the first will be rejected.
|
|
1254
|
-
* Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.
|
|
1255
|
-
*
|
|
1256
|
-
* Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.
|
|
1257
|
-
* If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.
|
|
1258
|
-
*
|
|
1259
|
-
* `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.
|
|
1260
|
-
* For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:
|
|
1261
|
-
*
|
|
1262
|
-
* ```js
|
|
1263
|
-
* function onDrop(acceptedFiles) {
|
|
1264
|
-
* const req = request.post('/upload')
|
|
1265
|
-
* acceptedFiles.forEach(file => {
|
|
1266
|
-
* req.attach(file.name, file)
|
|
1267
|
-
* })
|
|
1268
|
-
* req.end(callback)
|
|
1269
|
-
* }
|
|
1270
|
-
* ```
|
|
1271
|
-
*
|
|
1272
|
-
* @param {File[]} acceptedFiles
|
|
1273
|
-
* @param {FileRejection[]} fileRejections
|
|
1274
|
-
* @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)
|
|
1275
|
-
*/
|
|
1276
|
-
onDrop: PropTypes.func,
|
|
1277
|
-
|
|
1278
|
-
/**
|
|
1279
|
-
* Cb for when the `drop` event occurs.
|
|
1280
|
-
* Note that if no files are accepted, this callback is not invoked.
|
|
1281
|
-
*
|
|
1282
|
-
* @param {File[]} files
|
|
1283
|
-
* @param {(DragEvent|Event)} event
|
|
1284
|
-
*/
|
|
1285
|
-
onDropAccepted: PropTypes.func,
|
|
1286
|
-
|
|
1287
|
-
/**
|
|
1288
|
-
* Cb for when the `drop` event occurs.
|
|
1289
|
-
* Note that if no files are rejected, this callback is not invoked.
|
|
1290
|
-
*
|
|
1291
|
-
* @param {FileRejection[]} fileRejections
|
|
1292
|
-
* @param {(DragEvent|Event)} event
|
|
1293
|
-
*/
|
|
1294
|
-
onDropRejected: PropTypes.func,
|
|
1295
|
-
|
|
1296
|
-
/**
|
|
1297
|
-
* Cb for when there's some error from any of the promises.
|
|
1298
|
-
*
|
|
1299
|
-
* @param {Error} error
|
|
1300
|
-
*/
|
|
1301
|
-
onError: PropTypes.func,
|
|
1302
|
-
|
|
1303
|
-
/**
|
|
1304
|
-
* Custom validation function. It must return null if there's no errors.
|
|
1305
|
-
* @param {File} file
|
|
1306
|
-
* @returns {FileError|FileError[]|null}
|
|
1307
|
-
*/
|
|
1308
|
-
validator: PropTypes.func
|
|
1309
|
-
};
|
|
1310
|
-
/**
|
|
1311
|
-
* A function that is invoked for the `dragenter`,
|
|
1312
|
-
* `dragover` and `dragleave` events.
|
|
1313
|
-
* It is not invoked if the items are not files (such as link, text, etc.).
|
|
1314
|
-
*
|
|
1315
|
-
* @callback dragCb
|
|
1316
|
-
* @param {DragEvent} event
|
|
1317
|
-
*/
|
|
1318
|
-
|
|
1319
|
-
/**
|
|
1320
|
-
* A function that is invoked for the `drop` or input change event.
|
|
1321
|
-
* It is not invoked if the items are not files (such as link, text, etc.).
|
|
1322
|
-
*
|
|
1323
|
-
* @callback dropCb
|
|
1324
|
-
* @param {File[]} acceptedFiles List of accepted files
|
|
1325
|
-
* @param {FileRejection[]} fileRejections List of rejected files and why they were rejected
|
|
1326
|
-
* @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)
|
|
1327
|
-
*/
|
|
1328
|
-
|
|
1329
|
-
/**
|
|
1330
|
-
* A function that is invoked for the `drop` or input change event.
|
|
1331
|
-
* It is not invoked if the items are files (such as link, text, etc.).
|
|
1332
|
-
*
|
|
1333
|
-
* @callback dropAcceptedCb
|
|
1334
|
-
* @param {File[]} files List of accepted files that meet the given criteria
|
|
1335
|
-
* (`accept`, `multiple`, `minSize`, `maxSize`)
|
|
1336
|
-
* @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)
|
|
1337
|
-
*/
|
|
1338
|
-
|
|
1339
|
-
/**
|
|
1340
|
-
* A function that is invoked for the `drop` or input change event.
|
|
1341
|
-
*
|
|
1342
|
-
* @callback dropRejectedCb
|
|
1343
|
-
* @param {File[]} files List of rejected files that do not meet the given criteria
|
|
1344
|
-
* (`accept`, `multiple`, `minSize`, `maxSize`)
|
|
1345
|
-
* @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)
|
|
1346
|
-
*/
|
|
1347
|
-
|
|
1348
|
-
/**
|
|
1349
|
-
* A function that is used aggregate files,
|
|
1350
|
-
* in a asynchronous fashion, from drag or input change events.
|
|
1351
|
-
*
|
|
1352
|
-
* @callback getFilesFromEvent
|
|
1353
|
-
* @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)
|
|
1354
|
-
* @returns {(File[]|Promise<File[]>)}
|
|
1355
|
-
*/
|
|
1356
|
-
|
|
1357
|
-
/**
|
|
1358
|
-
* An object with the current dropzone state.
|
|
1359
|
-
*
|
|
1360
|
-
* @typedef {object} DropzoneState
|
|
1361
|
-
* @property {boolean} isFocused Dropzone area is in focus
|
|
1362
|
-
* @property {boolean} isFileDialogActive File dialog is opened
|
|
1363
|
-
* @property {boolean} isDragActive Active drag is in progress
|
|
1364
|
-
* @property {boolean} isDragAccept Dragged files are accepted
|
|
1365
|
-
* @property {boolean} isDragReject Some dragged files are rejected
|
|
1366
|
-
* @property {File[]} acceptedFiles Accepted files
|
|
1367
|
-
* @property {FileRejection[]} fileRejections Rejected files and why they were rejected
|
|
1368
|
-
*/
|
|
1369
|
-
|
|
1370
|
-
/**
|
|
1371
|
-
* An object with the dropzone methods.
|
|
1372
|
-
*
|
|
1373
|
-
* @typedef {object} DropzoneMethods
|
|
1374
|
-
* @property {Function} getRootProps Returns the props you should apply to the root drop container you render
|
|
1375
|
-
* @property {Function} getInputProps Returns the props you should apply to hidden file input you render
|
|
1376
|
-
* @property {Function} open Open the native file selection dialog
|
|
1377
|
-
*/
|
|
1378
|
-
|
|
1379
|
-
var initialState = {
|
|
1380
|
-
isFocused: false,
|
|
1381
|
-
isFileDialogActive: false,
|
|
1382
|
-
isDragActive: false,
|
|
1383
|
-
isDragAccept: false,
|
|
1384
|
-
isDragReject: false,
|
|
1385
|
-
acceptedFiles: [],
|
|
1386
|
-
fileRejections: []
|
|
1387
|
-
};
|
|
1388
|
-
/**
|
|
1389
|
-
* A React hook that creates a drag 'n' drop area.
|
|
1390
|
-
*
|
|
1391
|
-
* ```jsx
|
|
1392
|
-
* function MyDropzone(props) {
|
|
1393
|
-
* const {getRootProps, getInputProps} = useDropzone({
|
|
1394
|
-
* onDrop: acceptedFiles => {
|
|
1395
|
-
* // do something with the File objects, e.g. upload to some server
|
|
1396
|
-
* }
|
|
1397
|
-
* });
|
|
1398
|
-
* return (
|
|
1399
|
-
* <div {...getRootProps()}>
|
|
1400
|
-
* <input {...getInputProps()} />
|
|
1401
|
-
* <p>Drag and drop some files here, or click to select files</p>
|
|
1402
|
-
* </div>
|
|
1403
|
-
* )
|
|
1404
|
-
* }
|
|
1405
|
-
* ```
|
|
1406
|
-
*
|
|
1407
|
-
* @function useDropzone
|
|
1408
|
-
*
|
|
1409
|
-
* @param {object} props
|
|
1410
|
-
* @param {import("./utils").AcceptProp} [props.accept] Set accepted file types.
|
|
1411
|
-
* Checkout https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker types option for more information.
|
|
1412
|
-
* Keep in mind that mime type determination is not reliable across platforms. CSV files,
|
|
1413
|
-
* for example, are reported as text/plain under macOS but as application/vnd.ms-excel under
|
|
1414
|
-
* Windows. In some cases there might not be a mime type set at all (https://github.com/react-dropzone/react-dropzone/issues/276).
|
|
1415
|
-
* @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files
|
|
1416
|
-
* @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window
|
|
1417
|
-
* @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog
|
|
1418
|
-
* @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.
|
|
1419
|
-
* Note that it also stops tracking the focus state.
|
|
1420
|
-
* @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop
|
|
1421
|
-
* @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents
|
|
1422
|
-
* @param {number} [props.minSize=0] Minimum file size (in bytes)
|
|
1423
|
-
* @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)
|
|
1424
|
-
* @param {boolean} [props.disabled=false] Enable/disable the dropzone
|
|
1425
|
-
* @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator
|
|
1426
|
-
* @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection
|
|
1427
|
-
* @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API
|
|
1428
|
-
* to open the file picker instead of using an `<input type="file">` click event.
|
|
1429
|
-
* @param {boolean} autoFocus Set to true to auto focus the root element.
|
|
1430
|
-
* @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog
|
|
1431
|
-
* @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.
|
|
1432
|
-
* @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs
|
|
1433
|
-
* @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs
|
|
1434
|
-
* @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.
|
|
1435
|
-
* Note that this callback is invoked after the `getFilesFromEvent` callback is done.
|
|
1436
|
-
*
|
|
1437
|
-
* Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.
|
|
1438
|
-
* `accept` must be an object with keys as a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) and the value an array of file extensions (optional).
|
|
1439
|
-
* If `multiple` is set to false and additional files are dropped,
|
|
1440
|
-
* all files besides the first will be rejected.
|
|
1441
|
-
* Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.
|
|
1442
|
-
*
|
|
1443
|
-
* Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.
|
|
1444
|
-
* If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.
|
|
1445
|
-
*
|
|
1446
|
-
* `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.
|
|
1447
|
-
* For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:
|
|
1448
|
-
*
|
|
1449
|
-
* ```js
|
|
1450
|
-
* function onDrop(acceptedFiles) {
|
|
1451
|
-
* const req = request.post('/upload')
|
|
1452
|
-
* acceptedFiles.forEach(file => {
|
|
1453
|
-
* req.attach(file.name, file)
|
|
1454
|
-
* })
|
|
1455
|
-
* req.end(callback)
|
|
1456
|
-
* }
|
|
1457
|
-
* ```
|
|
1458
|
-
* @param {dropAcceptedCb} [props.onDropAccepted]
|
|
1459
|
-
* @param {dropRejectedCb} [props.onDropRejected]
|
|
1460
|
-
* @param {(error: Error) => void} [props.onError]
|
|
1461
|
-
*
|
|
1462
|
-
* @returns {DropzoneState & DropzoneMethods}
|
|
1463
|
-
*/
|
|
1464
|
-
|
|
1465
|
-
function useDropzone() {
|
|
1466
|
-
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1467
|
-
|
|
1468
|
-
var _defaultProps$props = _objectSpread$a(_objectSpread$a({}, defaultProps), props),
|
|
1469
|
-
accept = _defaultProps$props.accept,
|
|
1470
|
-
disabled = _defaultProps$props.disabled,
|
|
1471
|
-
getFilesFromEvent = _defaultProps$props.getFilesFromEvent,
|
|
1472
|
-
maxSize = _defaultProps$props.maxSize,
|
|
1473
|
-
minSize = _defaultProps$props.minSize,
|
|
1474
|
-
multiple = _defaultProps$props.multiple,
|
|
1475
|
-
maxFiles = _defaultProps$props.maxFiles,
|
|
1476
|
-
onDragEnter = _defaultProps$props.onDragEnter,
|
|
1477
|
-
onDragLeave = _defaultProps$props.onDragLeave,
|
|
1478
|
-
onDragOver = _defaultProps$props.onDragOver,
|
|
1479
|
-
onDrop = _defaultProps$props.onDrop,
|
|
1480
|
-
onDropAccepted = _defaultProps$props.onDropAccepted,
|
|
1481
|
-
onDropRejected = _defaultProps$props.onDropRejected,
|
|
1482
|
-
onFileDialogCancel = _defaultProps$props.onFileDialogCancel,
|
|
1483
|
-
onFileDialogOpen = _defaultProps$props.onFileDialogOpen,
|
|
1484
|
-
useFsAccessApi = _defaultProps$props.useFsAccessApi,
|
|
1485
|
-
autoFocus = _defaultProps$props.autoFocus,
|
|
1486
|
-
preventDropOnDocument = _defaultProps$props.preventDropOnDocument,
|
|
1487
|
-
noClick = _defaultProps$props.noClick,
|
|
1488
|
-
noKeyboard = _defaultProps$props.noKeyboard,
|
|
1489
|
-
noDrag = _defaultProps$props.noDrag,
|
|
1490
|
-
noDragEventsBubbling = _defaultProps$props.noDragEventsBubbling,
|
|
1491
|
-
onError = _defaultProps$props.onError,
|
|
1492
|
-
validator = _defaultProps$props.validator;
|
|
1493
|
-
|
|
1494
|
-
var acceptAttr = useMemo(function () {
|
|
1495
|
-
return acceptPropAsAcceptAttr(accept);
|
|
1496
|
-
}, [accept]);
|
|
1497
|
-
var pickerTypes = useMemo(function () {
|
|
1498
|
-
return pickerOptionsFromAccept(accept);
|
|
1499
|
-
}, [accept]);
|
|
1500
|
-
var onFileDialogOpenCb = useMemo(function () {
|
|
1501
|
-
return typeof onFileDialogOpen === "function" ? onFileDialogOpen : noop;
|
|
1502
|
-
}, [onFileDialogOpen]);
|
|
1503
|
-
var onFileDialogCancelCb = useMemo(function () {
|
|
1504
|
-
return typeof onFileDialogCancel === "function" ? onFileDialogCancel : noop;
|
|
1505
|
-
}, [onFileDialogCancel]);
|
|
1506
|
-
/**
|
|
1507
|
-
* @constant
|
|
1508
|
-
* @type {React.MutableRefObject<HTMLElement>}
|
|
1509
|
-
*/
|
|
1510
|
-
|
|
1511
|
-
var rootRef = useRef(null);
|
|
1512
|
-
var inputRef = useRef(null);
|
|
1513
|
-
|
|
1514
|
-
var _useReducer = useReducer(reducer, initialState),
|
|
1515
|
-
_useReducer2 = _slicedToArray(_useReducer, 2),
|
|
1516
|
-
state = _useReducer2[0],
|
|
1517
|
-
dispatch = _useReducer2[1];
|
|
1518
|
-
|
|
1519
|
-
var isFocused = state.isFocused,
|
|
1520
|
-
isFileDialogActive = state.isFileDialogActive;
|
|
1521
|
-
var fsAccessApiWorksRef = useRef(typeof window !== "undefined" && window.isSecureContext && useFsAccessApi && canUseFileSystemAccessAPI()); // Update file dialog active state when the window is focused on
|
|
1522
|
-
|
|
1523
|
-
var onWindowFocus = function onWindowFocus() {
|
|
1524
|
-
// Execute the timeout only if the file dialog is opened in the browser
|
|
1525
|
-
if (!fsAccessApiWorksRef.current && isFileDialogActive) {
|
|
1526
|
-
setTimeout(function () {
|
|
1527
|
-
if (inputRef.current) {
|
|
1528
|
-
var files = inputRef.current.files;
|
|
1529
|
-
|
|
1530
|
-
if (!files.length) {
|
|
1531
|
-
dispatch({
|
|
1532
|
-
type: "closeDialog"
|
|
1533
|
-
});
|
|
1534
|
-
onFileDialogCancelCb();
|
|
1535
|
-
}
|
|
1536
|
-
}
|
|
1537
|
-
}, 300);
|
|
1538
|
-
}
|
|
1539
|
-
};
|
|
1540
|
-
|
|
1541
|
-
useEffect(function () {
|
|
1542
|
-
window.addEventListener("focus", onWindowFocus, false);
|
|
1543
|
-
return function () {
|
|
1544
|
-
window.removeEventListener("focus", onWindowFocus, false);
|
|
1545
|
-
};
|
|
1546
|
-
}, [inputRef, isFileDialogActive, onFileDialogCancelCb, fsAccessApiWorksRef]);
|
|
1547
|
-
var dragTargetsRef = useRef([]);
|
|
1548
|
-
|
|
1549
|
-
var onDocumentDrop = function onDocumentDrop(event) {
|
|
1550
|
-
if (rootRef.current && rootRef.current.contains(event.target)) {
|
|
1551
|
-
// If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler
|
|
1552
|
-
return;
|
|
1553
|
-
}
|
|
1554
|
-
|
|
1555
|
-
event.preventDefault();
|
|
1556
|
-
dragTargetsRef.current = [];
|
|
1557
|
-
};
|
|
1558
|
-
|
|
1559
|
-
useEffect(function () {
|
|
1560
|
-
if (preventDropOnDocument) {
|
|
1561
|
-
document.addEventListener("dragover", onDocumentDragOver, false);
|
|
1562
|
-
document.addEventListener("drop", onDocumentDrop, false);
|
|
1563
|
-
}
|
|
1564
|
-
|
|
1565
|
-
return function () {
|
|
1566
|
-
if (preventDropOnDocument) {
|
|
1567
|
-
document.removeEventListener("dragover", onDocumentDragOver);
|
|
1568
|
-
document.removeEventListener("drop", onDocumentDrop);
|
|
1569
|
-
}
|
|
1570
|
-
};
|
|
1571
|
-
}, [rootRef, preventDropOnDocument]); // Auto focus the root when autoFocus is true
|
|
1572
|
-
|
|
1573
|
-
useEffect(function () {
|
|
1574
|
-
if (!disabled && autoFocus && rootRef.current) {
|
|
1575
|
-
rootRef.current.focus();
|
|
1576
|
-
}
|
|
1577
|
-
|
|
1578
|
-
return function () {};
|
|
1579
|
-
}, [rootRef, autoFocus, disabled]);
|
|
1580
|
-
var onErrCb = useCallback(function (e) {
|
|
1581
|
-
if (onError) {
|
|
1582
|
-
onError(e);
|
|
1583
|
-
} else {
|
|
1584
|
-
// Let the user know something's gone wrong if they haven't provided the onError cb.
|
|
1585
|
-
console.error(e);
|
|
1586
|
-
}
|
|
1587
|
-
}, [onError]);
|
|
1588
|
-
var onDragEnterCb = useCallback(function (event) {
|
|
1589
|
-
event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done
|
|
1590
|
-
|
|
1591
|
-
event.persist();
|
|
1592
|
-
stopPropagation(event);
|
|
1593
|
-
dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);
|
|
1594
|
-
|
|
1595
|
-
if (isEvtWithFiles(event)) {
|
|
1596
|
-
Promise.resolve(getFilesFromEvent(event)).then(function (files) {
|
|
1597
|
-
if (isPropagationStopped(event) && !noDragEventsBubbling) {
|
|
1598
|
-
return;
|
|
1599
|
-
}
|
|
1600
|
-
|
|
1601
|
-
var fileCount = files.length;
|
|
1602
|
-
var isDragAccept = fileCount > 0 && allFilesAccepted({
|
|
1603
|
-
files: files,
|
|
1604
|
-
accept: acceptAttr,
|
|
1605
|
-
minSize: minSize,
|
|
1606
|
-
maxSize: maxSize,
|
|
1607
|
-
multiple: multiple,
|
|
1608
|
-
maxFiles: maxFiles,
|
|
1609
|
-
validator: validator
|
|
1610
|
-
});
|
|
1611
|
-
var isDragReject = fileCount > 0 && !isDragAccept;
|
|
1612
|
-
dispatch({
|
|
1613
|
-
isDragAccept: isDragAccept,
|
|
1614
|
-
isDragReject: isDragReject,
|
|
1615
|
-
isDragActive: true,
|
|
1616
|
-
type: "setDraggedFiles"
|
|
1617
|
-
});
|
|
1618
|
-
|
|
1619
|
-
if (onDragEnter) {
|
|
1620
|
-
onDragEnter(event);
|
|
1621
|
-
}
|
|
1622
|
-
}).catch(function (e) {
|
|
1623
|
-
return onErrCb(e);
|
|
1624
|
-
});
|
|
1625
|
-
}
|
|
1626
|
-
}, [getFilesFromEvent, onDragEnter, onErrCb, noDragEventsBubbling, acceptAttr, minSize, maxSize, multiple, maxFiles, validator]);
|
|
1627
|
-
var onDragOverCb = useCallback(function (event) {
|
|
1628
|
-
event.preventDefault();
|
|
1629
|
-
event.persist();
|
|
1630
|
-
stopPropagation(event);
|
|
1631
|
-
var hasFiles = isEvtWithFiles(event);
|
|
1632
|
-
|
|
1633
|
-
if (hasFiles && event.dataTransfer) {
|
|
1634
|
-
try {
|
|
1635
|
-
event.dataTransfer.dropEffect = "copy";
|
|
1636
|
-
} catch (_unused) {}
|
|
1637
|
-
/* eslint-disable-line no-empty */
|
|
1638
|
-
|
|
1639
|
-
}
|
|
1640
|
-
|
|
1641
|
-
if (hasFiles && onDragOver) {
|
|
1642
|
-
onDragOver(event);
|
|
1643
|
-
}
|
|
1644
|
-
|
|
1645
|
-
return false;
|
|
1646
|
-
}, [onDragOver, noDragEventsBubbling]);
|
|
1647
|
-
var onDragLeaveCb = useCallback(function (event) {
|
|
1648
|
-
event.preventDefault();
|
|
1649
|
-
event.persist();
|
|
1650
|
-
stopPropagation(event); // Only deactivate once the dropzone and all children have been left
|
|
1651
|
-
|
|
1652
|
-
var targets = dragTargetsRef.current.filter(function (target) {
|
|
1653
|
-
return rootRef.current && rootRef.current.contains(target);
|
|
1654
|
-
}); // Make sure to remove a target present multiple times only once
|
|
1655
|
-
// (Firefox may fire dragenter/dragleave multiple times on the same element)
|
|
1656
|
-
|
|
1657
|
-
var targetIdx = targets.indexOf(event.target);
|
|
1658
|
-
|
|
1659
|
-
if (targetIdx !== -1) {
|
|
1660
|
-
targets.splice(targetIdx, 1);
|
|
1661
|
-
}
|
|
1662
|
-
|
|
1663
|
-
dragTargetsRef.current = targets;
|
|
1664
|
-
|
|
1665
|
-
if (targets.length > 0) {
|
|
1666
|
-
return;
|
|
1667
|
-
}
|
|
1668
|
-
|
|
1669
|
-
dispatch({
|
|
1670
|
-
type: "setDraggedFiles",
|
|
1671
|
-
isDragActive: false,
|
|
1672
|
-
isDragAccept: false,
|
|
1673
|
-
isDragReject: false
|
|
1674
|
-
});
|
|
1675
|
-
|
|
1676
|
-
if (isEvtWithFiles(event) && onDragLeave) {
|
|
1677
|
-
onDragLeave(event);
|
|
1678
|
-
}
|
|
1679
|
-
}, [rootRef, onDragLeave, noDragEventsBubbling]);
|
|
1680
|
-
var setFiles = useCallback(function (files, event) {
|
|
1681
|
-
var acceptedFiles = [];
|
|
1682
|
-
var fileRejections = [];
|
|
1683
|
-
files.forEach(function (file) {
|
|
1684
|
-
var _fileAccepted = fileAccepted(file, acceptAttr),
|
|
1685
|
-
_fileAccepted2 = _slicedToArray(_fileAccepted, 2),
|
|
1686
|
-
accepted = _fileAccepted2[0],
|
|
1687
|
-
acceptError = _fileAccepted2[1];
|
|
1688
|
-
|
|
1689
|
-
var _fileMatchSize = fileMatchSize(file, minSize, maxSize),
|
|
1690
|
-
_fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),
|
|
1691
|
-
sizeMatch = _fileMatchSize2[0],
|
|
1692
|
-
sizeError = _fileMatchSize2[1];
|
|
1693
|
-
|
|
1694
|
-
var customErrors = validator ? validator(file) : null;
|
|
1695
|
-
|
|
1696
|
-
if (accepted && sizeMatch && !customErrors) {
|
|
1697
|
-
acceptedFiles.push(file);
|
|
1698
|
-
} else {
|
|
1699
|
-
var errors = [acceptError, sizeError];
|
|
1700
|
-
|
|
1701
|
-
if (customErrors) {
|
|
1702
|
-
errors = errors.concat(customErrors);
|
|
1703
|
-
}
|
|
1704
|
-
|
|
1705
|
-
fileRejections.push({
|
|
1706
|
-
file: file,
|
|
1707
|
-
errors: errors.filter(function (e) {
|
|
1708
|
-
return e;
|
|
1709
|
-
})
|
|
1710
|
-
});
|
|
1711
|
-
}
|
|
1712
|
-
});
|
|
1713
|
-
|
|
1714
|
-
if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {
|
|
1715
|
-
// Reject everything and empty accepted files
|
|
1716
|
-
acceptedFiles.forEach(function (file) {
|
|
1717
|
-
fileRejections.push({
|
|
1718
|
-
file: file,
|
|
1719
|
-
errors: [TOO_MANY_FILES_REJECTION]
|
|
1720
|
-
});
|
|
1721
|
-
});
|
|
1722
|
-
acceptedFiles.splice(0);
|
|
1723
|
-
}
|
|
1724
|
-
|
|
1725
|
-
dispatch({
|
|
1726
|
-
acceptedFiles: acceptedFiles,
|
|
1727
|
-
fileRejections: fileRejections,
|
|
1728
|
-
type: "setFiles"
|
|
1729
|
-
});
|
|
1730
|
-
|
|
1731
|
-
if (onDrop) {
|
|
1732
|
-
onDrop(acceptedFiles, fileRejections, event);
|
|
1733
|
-
}
|
|
1734
|
-
|
|
1735
|
-
if (fileRejections.length > 0 && onDropRejected) {
|
|
1736
|
-
onDropRejected(fileRejections, event);
|
|
1737
|
-
}
|
|
1738
|
-
|
|
1739
|
-
if (acceptedFiles.length > 0 && onDropAccepted) {
|
|
1740
|
-
onDropAccepted(acceptedFiles, event);
|
|
1741
|
-
}
|
|
1742
|
-
}, [dispatch, multiple, acceptAttr, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);
|
|
1743
|
-
var onDropCb = useCallback(function (event) {
|
|
1744
|
-
event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done
|
|
1745
|
-
|
|
1746
|
-
event.persist();
|
|
1747
|
-
stopPropagation(event);
|
|
1748
|
-
dragTargetsRef.current = [];
|
|
1749
|
-
|
|
1750
|
-
if (isEvtWithFiles(event)) {
|
|
1751
|
-
Promise.resolve(getFilesFromEvent(event)).then(function (files) {
|
|
1752
|
-
if (isPropagationStopped(event) && !noDragEventsBubbling) {
|
|
1753
|
-
return;
|
|
1754
|
-
}
|
|
1755
|
-
|
|
1756
|
-
setFiles(files, event);
|
|
1757
|
-
}).catch(function (e) {
|
|
1758
|
-
return onErrCb(e);
|
|
1759
|
-
});
|
|
1760
|
-
}
|
|
1761
|
-
|
|
1762
|
-
dispatch({
|
|
1763
|
-
type: "reset"
|
|
1764
|
-
});
|
|
1765
|
-
}, [getFilesFromEvent, setFiles, onErrCb, noDragEventsBubbling]); // Fn for opening the file dialog programmatically
|
|
1766
|
-
|
|
1767
|
-
var openFileDialog = useCallback(function () {
|
|
1768
|
-
// No point to use FS access APIs if context is not secure
|
|
1769
|
-
// https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts#feature_detection
|
|
1770
|
-
if (fsAccessApiWorksRef.current) {
|
|
1771
|
-
dispatch({
|
|
1772
|
-
type: "openDialog"
|
|
1773
|
-
});
|
|
1774
|
-
onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker
|
|
1775
|
-
|
|
1776
|
-
var opts = {
|
|
1777
|
-
multiple: multiple,
|
|
1778
|
-
types: pickerTypes
|
|
1779
|
-
};
|
|
1780
|
-
window.showOpenFilePicker(opts).then(function (handles) {
|
|
1781
|
-
return getFilesFromEvent(handles);
|
|
1782
|
-
}).then(function (files) {
|
|
1783
|
-
setFiles(files, null);
|
|
1784
|
-
dispatch({
|
|
1785
|
-
type: "closeDialog"
|
|
1786
|
-
});
|
|
1787
|
-
}).catch(function (e) {
|
|
1788
|
-
// AbortError means the user canceled
|
|
1789
|
-
if (isAbort(e)) {
|
|
1790
|
-
onFileDialogCancelCb(e);
|
|
1791
|
-
dispatch({
|
|
1792
|
-
type: "closeDialog"
|
|
1793
|
-
});
|
|
1794
|
-
} else if (isSecurityError(e)) {
|
|
1795
|
-
fsAccessApiWorksRef.current = false; // CORS, so cannot use this API
|
|
1796
|
-
// Try using the input
|
|
1797
|
-
|
|
1798
|
-
if (inputRef.current) {
|
|
1799
|
-
inputRef.current.value = null;
|
|
1800
|
-
inputRef.current.click();
|
|
1801
|
-
} else {
|
|
1802
|
-
onErrCb(new Error("Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no <input> was provided."));
|
|
1803
|
-
}
|
|
1804
|
-
} else {
|
|
1805
|
-
onErrCb(e);
|
|
1806
|
-
}
|
|
1807
|
-
});
|
|
1808
|
-
return;
|
|
1809
|
-
}
|
|
1810
|
-
|
|
1811
|
-
if (inputRef.current) {
|
|
1812
|
-
dispatch({
|
|
1813
|
-
type: "openDialog"
|
|
1814
|
-
});
|
|
1815
|
-
onFileDialogOpenCb();
|
|
1816
|
-
inputRef.current.value = null;
|
|
1817
|
-
inputRef.current.click();
|
|
1818
|
-
}
|
|
1819
|
-
}, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, onErrCb, pickerTypes, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone
|
|
1820
|
-
|
|
1821
|
-
var onKeyDownCb = useCallback(function (event) {
|
|
1822
|
-
// Ignore keyboard events bubbling up the DOM tree
|
|
1823
|
-
if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {
|
|
1824
|
-
return;
|
|
1825
|
-
}
|
|
1826
|
-
|
|
1827
|
-
if (event.key === " " || event.key === "Enter" || event.keyCode === 32 || event.keyCode === 13) {
|
|
1828
|
-
event.preventDefault();
|
|
1829
|
-
openFileDialog();
|
|
1830
|
-
}
|
|
1831
|
-
}, [rootRef, openFileDialog]); // Update focus state for the dropzone
|
|
1832
|
-
|
|
1833
|
-
var onFocusCb = useCallback(function () {
|
|
1834
|
-
dispatch({
|
|
1835
|
-
type: "focus"
|
|
1836
|
-
});
|
|
1837
|
-
}, []);
|
|
1838
|
-
var onBlurCb = useCallback(function () {
|
|
1839
|
-
dispatch({
|
|
1840
|
-
type: "blur"
|
|
1841
|
-
});
|
|
1842
|
-
}, []); // Cb to open the file dialog when click occurs on the dropzone
|
|
1843
|
-
|
|
1844
|
-
var onClickCb = useCallback(function () {
|
|
1845
|
-
if (noClick) {
|
|
1846
|
-
return;
|
|
1847
|
-
} // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()
|
|
1848
|
-
// to ensure React can handle state changes
|
|
1849
|
-
// See: https://github.com/react-dropzone/react-dropzone/issues/450
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
if (isIeOrEdge()) {
|
|
1853
|
-
setTimeout(openFileDialog, 0);
|
|
1854
|
-
} else {
|
|
1855
|
-
openFileDialog();
|
|
1856
|
-
}
|
|
1857
|
-
}, [noClick, openFileDialog]);
|
|
1858
|
-
|
|
1859
|
-
var composeHandler = function composeHandler(fn) {
|
|
1860
|
-
return disabled ? null : fn;
|
|
1861
|
-
};
|
|
1862
|
-
|
|
1863
|
-
var composeKeyboardHandler = function composeKeyboardHandler(fn) {
|
|
1864
|
-
return noKeyboard ? null : composeHandler(fn);
|
|
1865
|
-
};
|
|
1866
|
-
|
|
1867
|
-
var composeDragHandler = function composeDragHandler(fn) {
|
|
1868
|
-
return noDrag ? null : composeHandler(fn);
|
|
1869
|
-
};
|
|
1870
|
-
|
|
1871
|
-
var stopPropagation = function stopPropagation(event) {
|
|
1872
|
-
if (noDragEventsBubbling) {
|
|
1873
|
-
event.stopPropagation();
|
|
1874
|
-
}
|
|
1875
|
-
};
|
|
1876
|
-
|
|
1877
|
-
var getRootProps = useMemo(function () {
|
|
1878
|
-
return function () {
|
|
1879
|
-
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
1880
|
-
_ref2$refKey = _ref2.refKey,
|
|
1881
|
-
refKey = _ref2$refKey === void 0 ? "ref" : _ref2$refKey,
|
|
1882
|
-
role = _ref2.role,
|
|
1883
|
-
onKeyDown = _ref2.onKeyDown,
|
|
1884
|
-
onFocus = _ref2.onFocus,
|
|
1885
|
-
onBlur = _ref2.onBlur,
|
|
1886
|
-
onClick = _ref2.onClick,
|
|
1887
|
-
onDragEnter = _ref2.onDragEnter,
|
|
1888
|
-
onDragOver = _ref2.onDragOver,
|
|
1889
|
-
onDragLeave = _ref2.onDragLeave,
|
|
1890
|
-
onDrop = _ref2.onDrop,
|
|
1891
|
-
rest = _objectWithoutProperties$1(_ref2, _excluded3);
|
|
1892
|
-
|
|
1893
|
-
return _objectSpread$a(_objectSpread$a(_defineProperty$1({
|
|
1894
|
-
onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),
|
|
1895
|
-
onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),
|
|
1896
|
-
onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),
|
|
1897
|
-
onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),
|
|
1898
|
-
onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),
|
|
1899
|
-
onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),
|
|
1900
|
-
onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),
|
|
1901
|
-
onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),
|
|
1902
|
-
role: typeof role === "string" && role !== "" ? role : "presentation"
|
|
1903
|
-
}, refKey, rootRef), !disabled && !noKeyboard ? {
|
|
1904
|
-
tabIndex: 0
|
|
1905
|
-
} : {}), rest);
|
|
1906
|
-
};
|
|
1907
|
-
}, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);
|
|
1908
|
-
var onInputElementClick = useCallback(function (event) {
|
|
1909
|
-
event.stopPropagation();
|
|
1910
|
-
}, []);
|
|
1911
|
-
var getInputProps = useMemo(function () {
|
|
1912
|
-
return function () {
|
|
1913
|
-
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
1914
|
-
_ref3$refKey = _ref3.refKey,
|
|
1915
|
-
refKey = _ref3$refKey === void 0 ? "ref" : _ref3$refKey,
|
|
1916
|
-
onChange = _ref3.onChange,
|
|
1917
|
-
onClick = _ref3.onClick,
|
|
1918
|
-
rest = _objectWithoutProperties$1(_ref3, _excluded4);
|
|
1919
|
-
|
|
1920
|
-
var inputProps = _defineProperty$1({
|
|
1921
|
-
accept: acceptAttr,
|
|
1922
|
-
multiple: multiple,
|
|
1923
|
-
type: "file",
|
|
1924
|
-
style: {
|
|
1925
|
-
display: "none"
|
|
1926
|
-
},
|
|
1927
|
-
onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),
|
|
1928
|
-
onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),
|
|
1929
|
-
tabIndex: -1
|
|
1930
|
-
}, refKey, inputRef);
|
|
1931
|
-
|
|
1932
|
-
return _objectSpread$a(_objectSpread$a({}, inputProps), rest);
|
|
1933
|
-
};
|
|
1934
|
-
}, [inputRef, accept, multiple, onDropCb, disabled]);
|
|
1935
|
-
return _objectSpread$a(_objectSpread$a({}, state), {}, {
|
|
1936
|
-
isFocused: isFocused && !disabled,
|
|
1937
|
-
getRootProps: getRootProps,
|
|
1938
|
-
getInputProps: getInputProps,
|
|
1939
|
-
rootRef: rootRef,
|
|
1940
|
-
inputRef: inputRef,
|
|
1941
|
-
open: composeHandler(openFileDialog)
|
|
1942
|
-
});
|
|
1943
|
-
}
|
|
1944
|
-
/**
|
|
1945
|
-
* @param {DropzoneState} state
|
|
1946
|
-
* @param {{type: string} & DropzoneState} action
|
|
1947
|
-
* @returns {DropzoneState}
|
|
1948
|
-
*/
|
|
1949
|
-
|
|
1950
|
-
function reducer(state, action) {
|
|
1951
|
-
/* istanbul ignore next */
|
|
1952
|
-
switch (action.type) {
|
|
1953
|
-
case "focus":
|
|
1954
|
-
return _objectSpread$a(_objectSpread$a({}, state), {}, {
|
|
1955
|
-
isFocused: true
|
|
1956
|
-
});
|
|
1957
|
-
|
|
1958
|
-
case "blur":
|
|
1959
|
-
return _objectSpread$a(_objectSpread$a({}, state), {}, {
|
|
1960
|
-
isFocused: false
|
|
1961
|
-
});
|
|
1962
|
-
|
|
1963
|
-
case "openDialog":
|
|
1964
|
-
return _objectSpread$a(_objectSpread$a({}, initialState), {}, {
|
|
1965
|
-
isFileDialogActive: true
|
|
1966
|
-
});
|
|
1967
|
-
|
|
1968
|
-
case "closeDialog":
|
|
1969
|
-
return _objectSpread$a(_objectSpread$a({}, state), {}, {
|
|
1970
|
-
isFileDialogActive: false
|
|
1971
|
-
});
|
|
1972
|
-
|
|
1973
|
-
case "setDraggedFiles":
|
|
1974
|
-
return _objectSpread$a(_objectSpread$a({}, state), {}, {
|
|
1975
|
-
isDragActive: action.isDragActive,
|
|
1976
|
-
isDragAccept: action.isDragAccept,
|
|
1977
|
-
isDragReject: action.isDragReject
|
|
1978
|
-
});
|
|
1979
|
-
|
|
1980
|
-
case "setFiles":
|
|
1981
|
-
return _objectSpread$a(_objectSpread$a({}, state), {}, {
|
|
1982
|
-
acceptedFiles: action.acceptedFiles,
|
|
1983
|
-
fileRejections: action.fileRejections
|
|
1984
|
-
});
|
|
1985
|
-
|
|
1986
|
-
case "reset":
|
|
1987
|
-
return _objectSpread$a({}, initialState);
|
|
1988
|
-
|
|
1989
|
-
default:
|
|
1990
|
-
return state;
|
|
1991
|
-
}
|
|
1992
|
-
}
|
|
1993
|
-
|
|
1994
|
-
function noop() {}
|
|
1995
|
-
|
|
1996
179
|
var DROPZONE_ROOT_DIV_CLASSNAME = "neeto-ui-border-primary-600 hover:neeto-ui-bg-gray-100 neeto-ui-rounded-lg flex h-full w-full flex-col items-center justify-center gap-3 border border-dashed p-5 transition-all duration-300 ease-in-out";
|
|
1997
180
|
var FILE_ERRORS = {
|
|
1998
181
|
"file-invalid-type": t$1("neetoImageUploader.imageUpload.fileTypeError"),
|
|
@@ -2017,7 +200,7 @@ var useUploadDropzone = function useUploadDropzone(_ref) {
|
|
|
2017
200
|
} : _ref$uploadConfig,
|
|
2018
201
|
_onDrop = _ref.onDrop;
|
|
2019
202
|
var _useState = useState(0),
|
|
2020
|
-
_useState2 = _slicedToArray
|
|
203
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
2021
204
|
uploadProgress = _useState2[0],
|
|
2022
205
|
setUploadProgress = _useState2[1];
|
|
2023
206
|
var _useDropzone = useDropzone({
|
|
@@ -2063,12 +246,12 @@ var ProgressBar = function ProgressBar(_ref) {
|
|
|
2063
246
|
};
|
|
2064
247
|
|
|
2065
248
|
function ownKeys$a(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; }
|
|
2066
|
-
function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty$
|
|
249
|
+
function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2067
250
|
var ImageDirectUpload = function ImageDirectUpload(_ref) {
|
|
2068
251
|
var _ref$uploadConfig = _ref.uploadConfig,
|
|
2069
252
|
uploadConfig = _ref$uploadConfig === void 0 ? DEFAULT_UPLOAD_CONFIG : _ref$uploadConfig,
|
|
2070
253
|
_ref$onDrop = _ref.onDrop,
|
|
2071
|
-
onDrop = _ref$onDrop === void 0 ? noop
|
|
254
|
+
onDrop = _ref$onDrop === void 0 ? noop : _ref$onDrop,
|
|
2072
255
|
_ref$isDisabled = _ref.isDisabled,
|
|
2073
256
|
isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
|
|
2074
257
|
setIsAssetLibraryOpen = _ref.setIsAssetLibraryOpen;
|
|
@@ -2097,9 +280,9 @@ var ImageDirectUpload = function ImageDirectUpload(_ref) {
|
|
|
2097
280
|
children: /*#__PURE__*/jsx(Trans, {
|
|
2098
281
|
i18nKey: "neetoImageUploader.imageUpload.dragAndDropOrBrowseFile",
|
|
2099
282
|
components: {
|
|
2100
|
-
span: /*#__PURE__*/jsx(
|
|
2101
|
-
|
|
2102
|
-
|
|
283
|
+
span: /*#__PURE__*/jsx(Button, {
|
|
284
|
+
"data-cy": "neeto-image-uploader-browse-text",
|
|
285
|
+
style: "link"
|
|
2103
286
|
})
|
|
2104
287
|
}
|
|
2105
288
|
})
|
|
@@ -2113,9 +296,9 @@ var ImageDirectUpload = function ImageDirectUpload(_ref) {
|
|
|
2113
296
|
children: /*#__PURE__*/jsx(Trans, {
|
|
2114
297
|
i18nKey: "neetoImageUploader.imageUpload.selectImagefromImageLibrary",
|
|
2115
298
|
components: {
|
|
2116
|
-
span: /*#__PURE__*/jsx(
|
|
2117
|
-
|
|
2118
|
-
|
|
299
|
+
span: /*#__PURE__*/jsx(Button, {
|
|
300
|
+
"data-cy": "open-asset-library-button",
|
|
301
|
+
style: "link"
|
|
2119
302
|
})
|
|
2120
303
|
}
|
|
2121
304
|
})
|
|
@@ -2141,28 +324,28 @@ var ImageDirectUpload = function ImageDirectUpload(_ref) {
|
|
|
2141
324
|
|
|
2142
325
|
var _excluded$4 = ["className"];
|
|
2143
326
|
function ownKeys$9(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; }
|
|
2144
|
-
function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty$
|
|
327
|
+
function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2145
328
|
var ImagePlaceholder = function ImagePlaceholder(_ref) {
|
|
2146
329
|
var _ref$className = _ref.className,
|
|
2147
330
|
className = _ref$className === void 0 ? "" : _ref$className,
|
|
2148
|
-
props = _objectWithoutProperties$
|
|
331
|
+
props = _objectWithoutProperties$1(_ref, _excluded$4);
|
|
2149
332
|
return /*#__PURE__*/jsx("div", _objectSpread$8({
|
|
2150
|
-
className: classnames("neeto-ui-bg-gray-200", _defineProperty$
|
|
333
|
+
className: classnames("neeto-ui-bg-gray-200", _defineProperty$1({}, className, className))
|
|
2151
334
|
}, props));
|
|
2152
335
|
};
|
|
2153
336
|
|
|
2154
337
|
var _excluded$3 = ["src", "className", "fallback"];
|
|
2155
338
|
function ownKeys$8(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; }
|
|
2156
|
-
function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty$
|
|
339
|
+
function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2157
340
|
var ImageWithFallback = function ImageWithFallback(_ref) {
|
|
2158
341
|
var src = _ref.src,
|
|
2159
342
|
_ref$className = _ref.className,
|
|
2160
343
|
className = _ref$className === void 0 ? "h-full w-full" : _ref$className,
|
|
2161
344
|
_ref$fallback = _ref.fallback,
|
|
2162
345
|
Fallback = _ref$fallback === void 0 ? ImagePlaceholder : _ref$fallback,
|
|
2163
|
-
props = _objectWithoutProperties$
|
|
346
|
+
props = _objectWithoutProperties$1(_ref, _excluded$3);
|
|
2164
347
|
var _useState = useState(false),
|
|
2165
|
-
_useState2 = _slicedToArray
|
|
348
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
2166
349
|
isLoaded = _useState2[0],
|
|
2167
350
|
setIsLoaded = _useState2[1];
|
|
2168
351
|
useEffect(function () {
|
|
@@ -2207,7 +390,7 @@ var OPTIONS = [{
|
|
|
2207
390
|
label: i18next.t("neetoImageUploader.labels.uploadNewImage"),
|
|
2208
391
|
"data-cy": "upload-new-asset",
|
|
2209
392
|
style: "primary",
|
|
2210
|
-
onClick: noop
|
|
393
|
+
onClick: noop
|
|
2211
394
|
}];
|
|
2212
395
|
var DEFAULT_CROP_CONFIG = {
|
|
2213
396
|
unit: "px",
|
|
@@ -2886,7 +1069,7 @@ var isItemsCenter = function isItemsCenter(_ref4) {
|
|
|
2886
1069
|
|
|
2887
1070
|
var _excluded$2 = ["src", "className", "imageFallbackProps", "onDrop", "isDisabled", "onRemove"];
|
|
2888
1071
|
function ownKeys$6(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; }
|
|
2889
|
-
function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty$
|
|
1072
|
+
function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2890
1073
|
var BasicImageUploader = function BasicImageUploader(_ref) {
|
|
2891
1074
|
var _ref$src = _ref.src,
|
|
2892
1075
|
src = _ref$src === void 0 ? "" : _ref$src,
|
|
@@ -2898,12 +1081,12 @@ var BasicImageUploader = function BasicImageUploader(_ref) {
|
|
|
2898
1081
|
className: "h-full w-full"
|
|
2899
1082
|
} : _ref$imageFallbackPro,
|
|
2900
1083
|
_ref$onDrop = _ref.onDrop,
|
|
2901
|
-
onDrop = _ref$onDrop === void 0 ? noop
|
|
1084
|
+
onDrop = _ref$onDrop === void 0 ? noop : _ref$onDrop,
|
|
2902
1085
|
_ref$isDisabled = _ref.isDisabled,
|
|
2903
1086
|
isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
|
|
2904
1087
|
_ref$onRemove = _ref.onRemove,
|
|
2905
|
-
onRemove = _ref$onRemove === void 0 ? noop
|
|
2906
|
-
props = _objectWithoutProperties$
|
|
1088
|
+
onRemove = _ref$onRemove === void 0 ? noop : _ref$onRemove,
|
|
1089
|
+
props = _objectWithoutProperties$1(_ref, _excluded$2);
|
|
2907
1090
|
return /*#__PURE__*/jsx("div", {
|
|
2908
1091
|
className: classnames(className, {
|
|
2909
1092
|
"cursor-pointer": true,
|
|
@@ -2961,7 +1144,7 @@ var ASSETS_STALE_TIME = 900000; // 15 mins
|
|
|
2961
1144
|
var UNSPLASH_STALE_TIME = 900000;
|
|
2962
1145
|
|
|
2963
1146
|
function ownKeys$5(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; }
|
|
2964
|
-
function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty$
|
|
1147
|
+
function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
2965
1148
|
var useCreateBlob = function useCreateBlob(options) {
|
|
2966
1149
|
return useMutationWithInvalidation(directUploadsApi.create, _objectSpread$5({
|
|
2967
1150
|
keysToInvalidate: [QUERY_KEYS.ASSETS_LIST]
|
|
@@ -2999,6 +1182,37 @@ function _asyncToGenerator(fn) {
|
|
|
2999
1182
|
};
|
|
3000
1183
|
}
|
|
3001
1184
|
|
|
1185
|
+
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
1186
|
+
|
|
1187
|
+
function getDefaultExportFromCjs (x) {
|
|
1188
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
function getAugmentedNamespace(n) {
|
|
1192
|
+
if (n.__esModule) return n;
|
|
1193
|
+
var f = n.default;
|
|
1194
|
+
if (typeof f == "function") {
|
|
1195
|
+
var a = function a () {
|
|
1196
|
+
if (this instanceof a) {
|
|
1197
|
+
return Reflect.construct(f, arguments, this.constructor);
|
|
1198
|
+
}
|
|
1199
|
+
return f.apply(this, arguments);
|
|
1200
|
+
};
|
|
1201
|
+
a.prototype = f.prototype;
|
|
1202
|
+
} else a = {};
|
|
1203
|
+
Object.defineProperty(a, '__esModule', {value: true});
|
|
1204
|
+
Object.keys(n).forEach(function (k) {
|
|
1205
|
+
var d = Object.getOwnPropertyDescriptor(n, k);
|
|
1206
|
+
Object.defineProperty(a, k, d.get ? d : {
|
|
1207
|
+
enumerable: true,
|
|
1208
|
+
get: function () {
|
|
1209
|
+
return n[k];
|
|
1210
|
+
}
|
|
1211
|
+
});
|
|
1212
|
+
});
|
|
1213
|
+
return a;
|
|
1214
|
+
}
|
|
1215
|
+
|
|
3002
1216
|
var regeneratorRuntime$1 = {exports: {}};
|
|
3003
1217
|
|
|
3004
1218
|
var _typeof = {exports: {}};
|
|
@@ -3358,9 +1572,9 @@ var generateASCIIFileName = function generateASCIIFileName(originalFileName) {
|
|
|
3358
1572
|
|
|
3359
1573
|
var useImageUploader = function useImageUploader(_ref) {
|
|
3360
1574
|
var _ref$onUploadComplete = _ref.onUploadComplete,
|
|
3361
|
-
onUploadComplete = _ref$onUploadComplete === void 0 ? noop
|
|
1575
|
+
onUploadComplete = _ref$onUploadComplete === void 0 ? noop : _ref$onUploadComplete,
|
|
3362
1576
|
_ref$setIsUploading = _ref.setIsUploading,
|
|
3363
|
-
setIsUploading = _ref$setIsUploading === void 0 ? noop
|
|
1577
|
+
setIsUploading = _ref$setIsUploading === void 0 ? noop : _ref$setIsUploading;
|
|
3364
1578
|
var authenticationEndpoint = "".concat(window.location.origin, "/neeto_image_uploader_engine/imagekit/auth");
|
|
3365
1579
|
var handleUploadProgress = function handleUploadProgress(e, fileSize, setUploadProgress) {
|
|
3366
1580
|
if (e.loaded <= fileSize) {
|
|
@@ -3514,7 +1728,7 @@ var developmentApi = {
|
|
|
3514
1728
|
};
|
|
3515
1729
|
|
|
3516
1730
|
function ownKeys$4(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; }
|
|
3517
|
-
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty$
|
|
1731
|
+
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3518
1732
|
var useCropImage = function useCropImage(options) {
|
|
3519
1733
|
return useMutation(_objectSpread$4({
|
|
3520
1734
|
mutationFn: developmentApi.cropImage
|
|
@@ -3657,11 +1871,11 @@ var Controls = function Controls(_ref) {
|
|
|
3657
1871
|
return cropHeight * (((_imageRef$current3 = imageRef.current) === null || _imageRef$current3 === void 0 ? void 0 : _imageRef$current3.naturalWidth) / ((_imageRef$current4 = imageRef.current) === null || _imageRef$current4 === void 0 ? void 0 : _imageRef$current4.width));
|
|
3658
1872
|
};
|
|
3659
1873
|
var _useState = useState(getActualCropHeight(crop.height)),
|
|
3660
|
-
_useState2 = _slicedToArray
|
|
1874
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
3661
1875
|
height = _useState2[0],
|
|
3662
1876
|
setHeight = _useState2[1];
|
|
3663
1877
|
var _useState3 = useState(getActualCropWidth(crop.width)),
|
|
3664
|
-
_useState4 = _slicedToArray
|
|
1878
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
3665
1879
|
width = _useState4[0],
|
|
3666
1880
|
setWidth = _useState4[1];
|
|
3667
1881
|
var _useImageControls = useImageControls({
|
|
@@ -3694,7 +1908,7 @@ var Controls = function Controls(_ref) {
|
|
|
3694
1908
|
}, [crop]);
|
|
3695
1909
|
return /*#__PURE__*/jsxs("div", {
|
|
3696
1910
|
className: "flex flex-col p-4 md:w-2/6 ",
|
|
3697
|
-
children: [!hideControls && /*#__PURE__*/jsxs(Fragment
|
|
1911
|
+
children: [!hideControls && /*#__PURE__*/jsxs(Fragment, {
|
|
3698
1912
|
children: [/*#__PURE__*/jsx(Switch, {
|
|
3699
1913
|
checked: isFullImage,
|
|
3700
1914
|
className: "flex-grow-0",
|
|
@@ -3762,28 +1976,28 @@ var ImageEditor = function ImageEditor(_ref) {
|
|
|
3762
1976
|
var image = _ref.image,
|
|
3763
1977
|
handleReset = _ref.handleReset,
|
|
3764
1978
|
_ref$handleImageEditC = _ref.handleImageEditComplete,
|
|
3765
|
-
handleImageEditComplete = _ref$handleImageEditC === void 0 ? noop
|
|
1979
|
+
handleImageEditComplete = _ref$handleImageEditC === void 0 ? noop : _ref$handleImageEditC,
|
|
3766
1980
|
_ref$signedId = _ref.signedId,
|
|
3767
1981
|
signedId = _ref$signedId === void 0 ? "" : _ref$signedId,
|
|
3768
1982
|
_ref$fixedAspectRatio = _ref.fixedAspectRatio,
|
|
3769
1983
|
fixedAspectRatio = _ref$fixedAspectRatio === void 0 ? {} : _ref$fixedAspectRatio;
|
|
3770
1984
|
var _useState = useState(true),
|
|
3771
|
-
_useState2 = _slicedToArray
|
|
1985
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
3772
1986
|
isAspectRatioLocked = _useState2[0],
|
|
3773
1987
|
setIsAspectRatioLocked = _useState2[1];
|
|
3774
1988
|
var _useState3 = useState(false),
|
|
3775
|
-
_useState4 = _slicedToArray
|
|
1989
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
3776
1990
|
isFullImage = _useState4[0],
|
|
3777
1991
|
setIsFullImage = _useState4[1];
|
|
3778
1992
|
var _useState5 = useState({
|
|
3779
1993
|
width: (fixedAspectRatio === null || fixedAspectRatio === void 0 ? void 0 : fixedAspectRatio.width) || 16,
|
|
3780
1994
|
height: (fixedAspectRatio === null || fixedAspectRatio === void 0 ? void 0 : fixedAspectRatio.height) || 9
|
|
3781
1995
|
}),
|
|
3782
|
-
_useState6 = _slicedToArray
|
|
1996
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
3783
1997
|
aspectRatio = _useState6[0],
|
|
3784
1998
|
setAspectRatio = _useState6[1];
|
|
3785
1999
|
var _useState7 = useState(DEFAULT_CROP_CONFIG),
|
|
3786
|
-
_useState8 = _slicedToArray
|
|
2000
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
3787
2001
|
crop = _useState8[0],
|
|
3788
2002
|
setCrop = _useState8[1];
|
|
3789
2003
|
var _useTranslation = useTranslation(),
|
|
@@ -3901,7 +2115,7 @@ var imagesApi = {
|
|
|
3901
2115
|
};
|
|
3902
2116
|
|
|
3903
2117
|
function ownKeys$3(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; }
|
|
3904
|
-
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty$
|
|
2118
|
+
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3905
2119
|
var useFetchAssets = function useFetchAssets(_ref) {
|
|
3906
2120
|
var searchTerm = _ref.searchTerm,
|
|
3907
2121
|
url = _ref.url,
|
|
@@ -3935,6 +2149,96 @@ var useFetchAssets = function useFetchAssets(_ref) {
|
|
|
3935
2149
|
|
|
3936
2150
|
var lib = {};
|
|
3937
2151
|
|
|
2152
|
+
var propTypes = {exports: {}};
|
|
2153
|
+
|
|
2154
|
+
/**
|
|
2155
|
+
* Copyright (c) 2013-present, Facebook, Inc.
|
|
2156
|
+
*
|
|
2157
|
+
* This source code is licensed under the MIT license found in the
|
|
2158
|
+
* LICENSE file in the root directory of this source tree.
|
|
2159
|
+
*/
|
|
2160
|
+
|
|
2161
|
+
var ReactPropTypesSecret$1 = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
|
|
2162
|
+
|
|
2163
|
+
var ReactPropTypesSecret_1 = ReactPropTypesSecret$1;
|
|
2164
|
+
|
|
2165
|
+
/**
|
|
2166
|
+
* Copyright (c) 2013-present, Facebook, Inc.
|
|
2167
|
+
*
|
|
2168
|
+
* This source code is licensed under the MIT license found in the
|
|
2169
|
+
* LICENSE file in the root directory of this source tree.
|
|
2170
|
+
*/
|
|
2171
|
+
|
|
2172
|
+
var ReactPropTypesSecret = ReactPropTypesSecret_1;
|
|
2173
|
+
|
|
2174
|
+
function emptyFunction() {}
|
|
2175
|
+
function emptyFunctionWithReset() {}
|
|
2176
|
+
emptyFunctionWithReset.resetWarningCache = emptyFunction;
|
|
2177
|
+
|
|
2178
|
+
var factoryWithThrowingShims = function() {
|
|
2179
|
+
function shim(props, propName, componentName, location, propFullName, secret) {
|
|
2180
|
+
if (secret === ReactPropTypesSecret) {
|
|
2181
|
+
// It is still safe when called from React.
|
|
2182
|
+
return;
|
|
2183
|
+
}
|
|
2184
|
+
var err = new Error(
|
|
2185
|
+
'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
|
|
2186
|
+
'Use PropTypes.checkPropTypes() to call them. ' +
|
|
2187
|
+
'Read more at http://fb.me/use-check-prop-types'
|
|
2188
|
+
);
|
|
2189
|
+
err.name = 'Invariant Violation';
|
|
2190
|
+
throw err;
|
|
2191
|
+
} shim.isRequired = shim;
|
|
2192
|
+
function getShim() {
|
|
2193
|
+
return shim;
|
|
2194
|
+
} // Important!
|
|
2195
|
+
// Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
|
|
2196
|
+
var ReactPropTypes = {
|
|
2197
|
+
array: shim,
|
|
2198
|
+
bigint: shim,
|
|
2199
|
+
bool: shim,
|
|
2200
|
+
func: shim,
|
|
2201
|
+
number: shim,
|
|
2202
|
+
object: shim,
|
|
2203
|
+
string: shim,
|
|
2204
|
+
symbol: shim,
|
|
2205
|
+
|
|
2206
|
+
any: shim,
|
|
2207
|
+
arrayOf: getShim,
|
|
2208
|
+
element: shim,
|
|
2209
|
+
elementType: shim,
|
|
2210
|
+
instanceOf: getShim,
|
|
2211
|
+
node: shim,
|
|
2212
|
+
objectOf: getShim,
|
|
2213
|
+
oneOf: getShim,
|
|
2214
|
+
oneOfType: getShim,
|
|
2215
|
+
shape: getShim,
|
|
2216
|
+
exact: getShim,
|
|
2217
|
+
|
|
2218
|
+
checkPropTypes: emptyFunctionWithReset,
|
|
2219
|
+
resetWarningCache: emptyFunction
|
|
2220
|
+
};
|
|
2221
|
+
|
|
2222
|
+
ReactPropTypes.PropTypes = ReactPropTypes;
|
|
2223
|
+
|
|
2224
|
+
return ReactPropTypes;
|
|
2225
|
+
};
|
|
2226
|
+
|
|
2227
|
+
/**
|
|
2228
|
+
* Copyright (c) 2013-present, Facebook, Inc.
|
|
2229
|
+
*
|
|
2230
|
+
* This source code is licensed under the MIT license found in the
|
|
2231
|
+
* LICENSE file in the root directory of this source tree.
|
|
2232
|
+
*/
|
|
2233
|
+
|
|
2234
|
+
{
|
|
2235
|
+
// By explicitly using `prop-types` you are opting into new production behavior.
|
|
2236
|
+
// http://fb.me/prop-types-in-prod
|
|
2237
|
+
propTypes.exports = factoryWithThrowingShims();
|
|
2238
|
+
}
|
|
2239
|
+
|
|
2240
|
+
var propTypesExports = propTypes.exports;
|
|
2241
|
+
|
|
3938
2242
|
var _extends = Object.assign || function (target) {
|
|
3939
2243
|
for (var i = 1; i < arguments.length; i++) {
|
|
3940
2244
|
var source = arguments[i];
|
|
@@ -4695,13 +2999,13 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
|
|
|
4695
2999
|
var _ref$hasMore = _ref.hasMore,
|
|
4696
3000
|
hasMore = _ref$hasMore === void 0 ? false : _ref$hasMore,
|
|
4697
3001
|
_ref$loadMore = _ref.loadMore,
|
|
4698
|
-
loadMore = _ref$loadMore === void 0 ? noop
|
|
3002
|
+
loadMore = _ref$loadMore === void 0 ? noop : _ref$loadMore,
|
|
4699
3003
|
tab = _ref.tab,
|
|
4700
3004
|
images = _ref.images,
|
|
4701
3005
|
_ref$setSelectedImage = _ref.setSelectedImage,
|
|
4702
|
-
setSelectedImage = _ref$setSelectedImage === void 0 ? noop
|
|
3006
|
+
setSelectedImage = _ref$setSelectedImage === void 0 ? noop : _ref$setSelectedImage,
|
|
4703
3007
|
_ref$handleUnsplashIm = _ref.handleUnsplashImageSelect,
|
|
4704
|
-
handleUnsplashImageSelect = _ref$handleUnsplashIm === void 0 ? noop
|
|
3008
|
+
handleUnsplashImageSelect = _ref$handleUnsplashIm === void 0 ? noop : _ref$handleUnsplashIm;
|
|
4705
3009
|
var _useTranslation = useTranslation(),
|
|
4706
3010
|
t = _useTranslation.t;
|
|
4707
3011
|
var Loader = /*#__PURE__*/jsx("div", {
|
|
@@ -4732,7 +3036,7 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
|
|
|
4732
3036
|
children: /*#__PURE__*/jsxs("div", {
|
|
4733
3037
|
className: "neeto-ui-rounded-sm neeto-ui-bg-gray-100 group absolute h-full w-full",
|
|
4734
3038
|
id: "unsplashImage".concat(image.id),
|
|
4735
|
-
children: [tab === TABS[1].key && /*#__PURE__*/jsxs(Fragment
|
|
3039
|
+
children: [tab === TABS[1].key && /*#__PURE__*/jsxs(Fragment, {
|
|
4736
3040
|
children: [/*#__PURE__*/jsx("img", {
|
|
4737
3041
|
"data-cy": "niu-unsplash-image-".concat(index),
|
|
4738
3042
|
src: image === null || image === void 0 || (_image$urls = image.urls) === null || _image$urls === void 0 ? void 0 : _image$urls.regular,
|
|
@@ -4824,7 +3128,7 @@ var unsplashApi = {
|
|
|
4824
3128
|
};
|
|
4825
3129
|
|
|
4826
3130
|
function ownKeys$2(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; }
|
|
4827
|
-
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty$
|
|
3131
|
+
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4828
3132
|
var UNSPLASH_LIST = QUERY_KEYS.UNSPLASH_LIST;
|
|
4829
3133
|
var useFetchUnsplashImages = function useFetchUnsplashImages(_ref) {
|
|
4830
3134
|
var query = _ref.query;
|
|
@@ -5000,7 +3304,7 @@ var ImageLibrary = function ImageLibrary(_ref) {
|
|
|
5000
3304
|
setIsUploading = _ref.setIsUploading,
|
|
5001
3305
|
setActiveTab = _ref.setActiveTab;
|
|
5002
3306
|
var _useState = useState(""),
|
|
5003
|
-
_useState2 = _slicedToArray
|
|
3307
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
5004
3308
|
query = _useState2[0],
|
|
5005
3309
|
setQuery = _useState2[1];
|
|
5006
3310
|
var _useTranslation = useTranslation(),
|
|
@@ -5039,27 +3343,27 @@ var ImageLibrary = function ImageLibrary(_ref) {
|
|
|
5039
3343
|
|
|
5040
3344
|
var _excluded$1 = ["key"];
|
|
5041
3345
|
function ownKeys$1(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; }
|
|
5042
|
-
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty$
|
|
3346
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5043
3347
|
var Modal = function Modal(_ref) {
|
|
5044
3348
|
var isOpen = _ref.isOpen,
|
|
5045
3349
|
_ref$onClose = _ref.onClose,
|
|
5046
|
-
onClose = _ref$onClose === void 0 ? noop
|
|
3350
|
+
onClose = _ref$onClose === void 0 ? noop : _ref$onClose,
|
|
5047
3351
|
_ref$onUploadComplete = _ref.onUploadComplete,
|
|
5048
|
-
onUploadComplete = _ref$onUploadComplete === void 0 ? noop
|
|
3352
|
+
onUploadComplete = _ref$onUploadComplete === void 0 ? noop : _ref$onUploadComplete,
|
|
5049
3353
|
_ref$uploadConfig = _ref.uploadConfig,
|
|
5050
3354
|
uploadConfig = _ref$uploadConfig === void 0 ? {} : _ref$uploadConfig,
|
|
5051
3355
|
_ref$fixedAspectRatio = _ref.fixedAspectRatio,
|
|
5052
3356
|
fixedAspectRatio = _ref$fixedAspectRatio === void 0 ? {} : _ref$fixedAspectRatio;
|
|
5053
3357
|
var _useState = useState(TABS[0].key),
|
|
5054
|
-
_useState2 = _slicedToArray
|
|
3358
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
5055
3359
|
activeTab = _useState2[0],
|
|
5056
3360
|
setActiveTab = _useState2[1];
|
|
5057
3361
|
var _useState3 = useState({}),
|
|
5058
|
-
_useState4 = _slicedToArray
|
|
3362
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
5059
3363
|
selectedImage = _useState4[0],
|
|
5060
3364
|
setSelectedImage = _useState4[1];
|
|
5061
3365
|
var _useState5 = useState(false),
|
|
5062
|
-
_useState6 = _slicedToArray
|
|
3366
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
5063
3367
|
isUploading = _useState6[0],
|
|
5064
3368
|
setIsUploading = _useState6[1];
|
|
5065
3369
|
var _useTranslation = useTranslation(),
|
|
@@ -5179,7 +3483,7 @@ var Modal = function Modal(_ref) {
|
|
|
5179
3483
|
className: "flex gap-2",
|
|
5180
3484
|
children: options.map(function (_ref2) {
|
|
5181
3485
|
var key = _ref2.key,
|
|
5182
|
-
otherProps = _objectWithoutProperties$
|
|
3486
|
+
otherProps = _objectWithoutProperties$1(_ref2, _excluded$1);
|
|
5183
3487
|
return /*#__PURE__*/createElement(Button, _objectSpread$1(_objectSpread$1({}, otherProps), {}, {
|
|
5184
3488
|
key: key,
|
|
5185
3489
|
size: "small"
|
|
@@ -5214,12 +3518,12 @@ var Modal = function Modal(_ref) {
|
|
|
5214
3518
|
|
|
5215
3519
|
var _excluded = ["key", "label"];
|
|
5216
3520
|
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; }
|
|
5217
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty$
|
|
3521
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty$1(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; }
|
|
5218
3522
|
var Menu = Dropdown.Menu,
|
|
5219
3523
|
MenuItem = Dropdown.MenuItem;
|
|
5220
3524
|
var ImageUploader = function ImageUploader(_ref) {
|
|
5221
3525
|
var _ref$onUploadComplete = _ref.onUploadComplete,
|
|
5222
|
-
onUploadComplete = _ref$onUploadComplete === void 0 ? noop
|
|
3526
|
+
onUploadComplete = _ref$onUploadComplete === void 0 ? noop : _ref$onUploadComplete,
|
|
5223
3527
|
_ref$className = _ref.className,
|
|
5224
3528
|
className = _ref$className === void 0 ? "" : _ref$className,
|
|
5225
3529
|
_ref$src = _ref.src,
|
|
@@ -5229,13 +3533,13 @@ var ImageUploader = function ImageUploader(_ref) {
|
|
|
5229
3533
|
_ref$fixedAspectRatio = _ref.fixedAspectRatio,
|
|
5230
3534
|
fixedAspectRatio = _ref$fixedAspectRatio === void 0 ? {} : _ref$fixedAspectRatio;
|
|
5231
3535
|
var _useState = useState(false),
|
|
5232
|
-
_useState2 = _slicedToArray
|
|
3536
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
5233
3537
|
isAssetLibraryOpen = _useState2[0],
|
|
5234
3538
|
setIsAssetLibraryOpen = _useState2[1];
|
|
5235
3539
|
var _useState3 = useState({
|
|
5236
3540
|
url: src
|
|
5237
3541
|
}),
|
|
5238
|
-
_useState4 = _slicedToArray
|
|
3542
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
5239
3543
|
image = _useState4[0],
|
|
5240
3544
|
setImage = _useState4[1];
|
|
5241
3545
|
var _useTranslation = useTranslation(),
|
|
@@ -5335,7 +3639,7 @@ var ImageUploader = function ImageUploader(_ref) {
|
|
|
5335
3639
|
children: options.map(function (_ref2) {
|
|
5336
3640
|
var key = _ref2.key,
|
|
5337
3641
|
label = _ref2.label,
|
|
5338
|
-
otherProps = _objectWithoutProperties$
|
|
3642
|
+
otherProps = _objectWithoutProperties$1(_ref2, _excluded);
|
|
5339
3643
|
return /*#__PURE__*/createElement(MenuItem.Button, _objectSpread(_objectSpread({}, otherProps), {}, {
|
|
5340
3644
|
key: key
|
|
5341
3645
|
}), label);
|
|
@@ -5361,11 +3665,11 @@ var ImageUploader = function ImageUploader(_ref) {
|
|
|
5361
3665
|
|
|
5362
3666
|
var useImageUpload = function useImageUpload() {
|
|
5363
3667
|
var _useState = useState(0),
|
|
5364
|
-
_useState2 = _slicedToArray
|
|
3668
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
5365
3669
|
uploadProgress = _useState2[0],
|
|
5366
3670
|
setUploadProgress = _useState2[1];
|
|
5367
3671
|
var _useState3 = useState(false),
|
|
5368
|
-
_useState4 = _slicedToArray
|
|
3672
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
5369
3673
|
isUploading = _useState4[0],
|
|
5370
3674
|
setIsUploading = _useState4[1];
|
|
5371
3675
|
var authenticationEndpoint = "".concat(window.location.origin, "/neeto_image_uploader_engine/imagekit/auth");
|
|
@@ -5506,11 +3810,11 @@ var useProfileImageUpload = function useProfileImageUpload(_ref) {
|
|
|
5506
3810
|
var _ref$uploadConfig = _ref.uploadConfig,
|
|
5507
3811
|
uploadConfig = _ref$uploadConfig === void 0 ? {} : _ref$uploadConfig;
|
|
5508
3812
|
var _useState = useState(0),
|
|
5509
|
-
_useState2 = _slicedToArray
|
|
3813
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
5510
3814
|
uploadProgress = _useState2[0],
|
|
5511
3815
|
setUploadProgress = _useState2[1];
|
|
5512
3816
|
var _useState3 = useState(false),
|
|
5513
|
-
_useState4 = _slicedToArray
|
|
3817
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
5514
3818
|
isUploading = _useState4[0],
|
|
5515
3819
|
setIsUploading = _useState4[1];
|
|
5516
3820
|
var authenticationEndpoint = "".concat(window.location.origin, "/neeto_image_uploader_engine/imagekit/auth");
|