@hai-dev/ui-kit 1.1.5 → 1.1.6
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/components/photo-crop-uploader/components/upload-dialog/upload-dialog.js +23 -23
- package/dist/components/photo-crop-uploader/constants.d.ts +1 -0
- package/dist/components/photo-crop-uploader/constants.js +38 -37
- package/dist/components/photo-crop-uploader/locale.js +10 -8
- package/dist/components/photo-crop-uploader/photo-crop-uploader.js +185 -177
- package/dist/components/photo-crop-uploader/types.d.ts +1 -0
- package/dist/components/photo-crop-uploader/utils/index.d.ts +1 -0
- package/dist/components/photo-crop-uploader/utils/index.js +14 -12
- package/dist/components/photo-crop-uploader/utils/validate-video-file.d.ts +2 -0
- package/dist/components/photo-crop-uploader/utils/validate-video-file.js +16 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs as L, jsx as a, Fragment as _ } from "react/jsx-runtime";
|
|
2
|
-
import * as
|
|
2
|
+
import * as k from "react";
|
|
3
3
|
import { S as $ } from "../../../../index-BiffjjQq.js";
|
|
4
4
|
import { c as i } from "../../../../index-B2JRaoNz.js";
|
|
5
5
|
import { s as n, U as V } from "../../../../upload-dialog-errors-Bxun25O-.js";
|
|
@@ -8,8 +8,8 @@ import { localizedText as p } from "../../locale.js";
|
|
|
8
8
|
import { EN_LOCALE as Z } from "../../../../constants.js";
|
|
9
9
|
import { CLOSE_ICON_SIZE as w } from "./constants.js";
|
|
10
10
|
import { DEFAULT_MIN_DIMENSION as Y, DEFAULT_ASPECT_RATIO as q } from "../../constants.js";
|
|
11
|
-
import { D as
|
|
12
|
-
import { a as D, b as
|
|
11
|
+
import { D as O } from "../../../../Dialog-DqFOpJyx.js";
|
|
12
|
+
import { a as D, b as E, D as G } from "../../../../DialogTitle-CeM_Z851.js";
|
|
13
13
|
import { CircularProgressLoader as J } from "../../../circular-progress-loader/circular-progress-loader.js";
|
|
14
14
|
import { a as K, g as Q, c as X, b as m, P as t } from "../../../../createTheme-RRQUOQoF.js";
|
|
15
15
|
import { m as A } from "../../../../memoTheme-5A7c_y33.js";
|
|
@@ -18,7 +18,7 @@ import { u as oo, s as W, c as eo, b as to } from "../../../../chainPropTypes-C0
|
|
|
18
18
|
import { u as ao } from "../../../../useId-CK6Kn3Tn.js";
|
|
19
19
|
import { B as ro } from "../../../../ButtonBase-DPLf5-lz.js";
|
|
20
20
|
import { C as no } from "../../../../CircularProgress-CrHaMZDC.js";
|
|
21
|
-
import { Button as
|
|
21
|
+
import { Button as P } from "../../../button/button.js";
|
|
22
22
|
import '../../../../assets/upload-dialog.css';function io(o) {
|
|
23
23
|
return Q("MuiIconButton", o);
|
|
24
24
|
}
|
|
@@ -169,7 +169,7 @@ const U = K("MuiIconButton", ["root", "disabled", "colorInherit", "colorPrimary"
|
|
|
169
169
|
display: "flex"
|
|
170
170
|
}
|
|
171
171
|
}]
|
|
172
|
-
})), j = /* @__PURE__ */
|
|
172
|
+
})), j = /* @__PURE__ */ k.forwardRef(function(e, r) {
|
|
173
173
|
const c = oo({
|
|
174
174
|
props: e,
|
|
175
175
|
name: "MuiIconButton"
|
|
@@ -230,7 +230,7 @@ process.env.NODE_ENV !== "production" && (j.propTypes = {
|
|
|
230
230
|
/**
|
|
231
231
|
* The icon to display.
|
|
232
232
|
*/
|
|
233
|
-
children: to(t.node, (o) =>
|
|
233
|
+
children: to(t.node, (o) => k.Children.toArray(o.children).some((r) => /* @__PURE__ */ k.isValidElement(r) && r.props.onClick) ? new Error(["MUI: You are providing an onClick event listener to a child of a button element.", "Prefer applying it to the IconButton directly.", "This guarantees that the whole <button> will be responsive to click events."].join(`
|
|
234
234
|
`)) : null),
|
|
235
235
|
/**
|
|
236
236
|
* Override or extend the styles applied to the component.
|
|
@@ -324,42 +324,42 @@ const po = "data:image/svg+xml,%3csvg%20width='46'%20height='46'%20viewBox='0%20
|
|
|
324
324
|
className: d,
|
|
325
325
|
photoIndex: C,
|
|
326
326
|
loadingValue: F,
|
|
327
|
-
errors:
|
|
328
|
-
...
|
|
327
|
+
errors: x,
|
|
328
|
+
...T
|
|
329
329
|
} = o, S = r.slice(C).length > 1;
|
|
330
|
-
return h || !r.length ? /* @__PURE__ */ a(
|
|
331
|
-
|
|
330
|
+
return h || !r.length && !x?.length ? /* @__PURE__ */ a(
|
|
331
|
+
O,
|
|
332
332
|
{
|
|
333
333
|
className: i(n.dialog, d),
|
|
334
334
|
onClose: e,
|
|
335
|
-
...
|
|
335
|
+
...T,
|
|
336
336
|
children: /* @__PURE__ */ a(D, { className: i(n.content), children: /* @__PURE__ */ a(J, { value: F }) })
|
|
337
337
|
}
|
|
338
|
-
) :
|
|
339
|
-
|
|
338
|
+
) : x?.length ? /* @__PURE__ */ a(
|
|
339
|
+
O,
|
|
340
340
|
{
|
|
341
341
|
className: i(n.dialog, d),
|
|
342
342
|
onClose: e,
|
|
343
|
-
...
|
|
343
|
+
...T,
|
|
344
344
|
children: /* @__PURE__ */ a(
|
|
345
345
|
V,
|
|
346
346
|
{
|
|
347
347
|
locale: l,
|
|
348
348
|
photoSources: r,
|
|
349
|
-
errors:
|
|
349
|
+
errors: x,
|
|
350
350
|
onCloseDialogHandler: e,
|
|
351
351
|
onClearErrors: v
|
|
352
352
|
}
|
|
353
353
|
)
|
|
354
354
|
}
|
|
355
355
|
) : /* @__PURE__ */ L(
|
|
356
|
-
|
|
356
|
+
O,
|
|
357
357
|
{
|
|
358
358
|
className: i(n.dialog, d),
|
|
359
359
|
onClose: e,
|
|
360
|
-
...
|
|
360
|
+
...T,
|
|
361
361
|
children: [
|
|
362
|
-
/* @__PURE__ */ a(
|
|
362
|
+
/* @__PURE__ */ a(E, { className: i(n.topActions), children: /* @__PURE__ */ a(
|
|
363
363
|
j,
|
|
364
364
|
{
|
|
365
365
|
onClick: e,
|
|
@@ -406,10 +406,10 @@ const po = "data:image/svg+xml,%3csvg%20width='46'%20height='46'%20viewBox='0%20
|
|
|
406
406
|
),
|
|
407
407
|
S && /* @__PURE__ */ a(H, { photoSources: r, photoIndex: C })
|
|
408
408
|
] }),
|
|
409
|
-
u && /* @__PURE__ */ a(
|
|
410
|
-
/* @__PURE__ */ a(
|
|
409
|
+
u && /* @__PURE__ */ a(E, { className: i(n.dialogText), children: u }),
|
|
410
|
+
/* @__PURE__ */ a(E, { className: i(n.botActions), children: S ? /* @__PURE__ */ L(_, { children: [
|
|
411
411
|
/* @__PURE__ */ a(
|
|
412
|
-
|
|
412
|
+
P,
|
|
413
413
|
{
|
|
414
414
|
buttonSize: "small",
|
|
415
415
|
buttonColor: "blue",
|
|
@@ -421,7 +421,7 @@ const po = "data:image/svg+xml,%3csvg%20width='46'%20height='46'%20viewBox='0%20
|
|
|
421
421
|
}
|
|
422
422
|
),
|
|
423
423
|
/* @__PURE__ */ a(
|
|
424
|
-
|
|
424
|
+
P,
|
|
425
425
|
{
|
|
426
426
|
buttonSize: "small",
|
|
427
427
|
buttonColor: "blue",
|
|
@@ -433,7 +433,7 @@ const po = "data:image/svg+xml,%3csvg%20width='46'%20height='46'%20viewBox='0%20
|
|
|
433
433
|
}
|
|
434
434
|
)
|
|
435
435
|
] }) : /* @__PURE__ */ a(
|
|
436
|
-
|
|
436
|
+
P,
|
|
437
437
|
{
|
|
438
438
|
minWidth: "100%",
|
|
439
439
|
buttonSize: "small",
|
|
@@ -36,6 +36,7 @@ export declare const MIME_TO_EXT: {
|
|
|
36
36
|
};
|
|
37
37
|
export declare const DEFAULT_TIMEOUT = 500;
|
|
38
38
|
export declare const DEFAULT_FILE_MAX_SIZE: number;
|
|
39
|
+
export declare const DEFAULT_VIDEO_FILE_MAX_SIZE: number;
|
|
39
40
|
export declare const PHOTO_CANVAS_CONTEXT = "2d";
|
|
40
41
|
export declare const PHOTO_SMOOTHING_QUALITY = "high";
|
|
41
42
|
export declare const PRECENT_UNIT = "%";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { BYTE_TO_KILOBYTE as
|
|
2
|
-
const N = 1, e = 670,
|
|
3
|
-
E,
|
|
1
|
+
import { BYTE_TO_KILOBYTE as E } from "../../constants.js";
|
|
2
|
+
const N = 1, e = 670, _ = ".jpg", I = ".jpeg", o = ".png", A = ".svg", M = ".bmp", P = ".gif", T = ".ico", n = ".webp", D = [
|
|
4
3
|
_,
|
|
5
|
-
|
|
4
|
+
I,
|
|
6
5
|
o,
|
|
7
|
-
M,
|
|
8
6
|
A,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
], n = "image/jpg", c = "image/jpeg", s = "image/png", t = "image/svg+xml", O = "image/bmp", Y = "image/gif", S = "image/webp", m = "image/x-icon", g = "image/vnd.microsoft.icon", L = ".mp4", X = ".webm", p = "video/mp4", C = "video/webm", U = [
|
|
7
|
+
M,
|
|
8
|
+
P,
|
|
12
9
|
n,
|
|
10
|
+
T
|
|
11
|
+
], G = "image/jpg", c = "image/jpeg", s = "image/png", t = "image/svg+xml", O = "image/bmp", Y = "image/gif", S = "image/webp", m = "image/x-icon", g = "image/vnd.microsoft.icon", L = ".mp4", X = ".webm", U = "video/mp4", p = "video/webm", C = [
|
|
12
|
+
G,
|
|
13
13
|
c,
|
|
14
14
|
s,
|
|
15
15
|
t,
|
|
@@ -19,16 +19,16 @@ const N = 1, e = 670, E = ".jpg", _ = ".jpeg", P = ".png", o = ".svg", M = ".bmp
|
|
|
19
19
|
m,
|
|
20
20
|
g
|
|
21
21
|
], F = {
|
|
22
|
-
JPEG_IMAGE_TYPE: [
|
|
23
|
-
JPG_IMAGE_TYPE: [
|
|
24
|
-
PNG_IMAGE_TYPE: [
|
|
25
|
-
GIF_IMAGE_TYPE: [
|
|
26
|
-
SVG_IMAGE_TYPE: [
|
|
22
|
+
JPEG_IMAGE_TYPE: [_, I],
|
|
23
|
+
JPG_IMAGE_TYPE: [_, I],
|
|
24
|
+
PNG_IMAGE_TYPE: [o],
|
|
25
|
+
GIF_IMAGE_TYPE: [P],
|
|
26
|
+
SVG_IMAGE_TYPE: [A],
|
|
27
27
|
BMP_IMAGE_TYPE: [M],
|
|
28
|
-
WEBP_IMAGE_TYPE: [
|
|
28
|
+
WEBP_IMAGE_TYPE: [n],
|
|
29
29
|
ICO_IMAGE_TYPE: [T],
|
|
30
30
|
MICROSOFT_ICO_IMAGE_TYPE: [T]
|
|
31
|
-
}, R = 500, B =
|
|
31
|
+
}, R = 500, B = 10 * E * E, V = 50 * E * E, a = "2d", b = "high", J = "%", v = "px", W = "ms", d = "mb", f = 1, j = 100, r = 2, w = 0.5, x = 100, H = 100, Z = 500;
|
|
32
32
|
export {
|
|
33
33
|
M as BMP_IMAGE_EXT,
|
|
34
34
|
O as BMP_IMAGE_TYPE,
|
|
@@ -36,39 +36,40 @@ export {
|
|
|
36
36
|
B as DEFAULT_FILE_MAX_SIZE,
|
|
37
37
|
e as DEFAULT_MIN_DIMENSION,
|
|
38
38
|
R as DEFAULT_TIMEOUT,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
V as DEFAULT_VIDEO_FILE_MAX_SIZE,
|
|
40
|
+
j as FULL_CROP_SIZE,
|
|
41
|
+
x as FULL_PROGRESS_VALUE,
|
|
42
|
+
P as GIF_IMAGE_EXT,
|
|
42
43
|
Y as GIF_IMAGE_TYPE,
|
|
43
44
|
T as ICO_IMAGE_EXT,
|
|
44
45
|
m as ICO_IMAGE_TYPE,
|
|
45
|
-
|
|
46
|
+
I as JPEG_IMAGE_EXT,
|
|
46
47
|
c as JPEG_IMAGE_TYPE,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
_ as JPG_IMAGE_EXT,
|
|
49
|
+
G as JPG_IMAGE_TYPE,
|
|
50
|
+
r as MAX_ASPECT_RATIO,
|
|
51
|
+
f as MB_FRACTION_DIGITS,
|
|
52
|
+
d as MB_UNIT,
|
|
52
53
|
g as MICROSOFT_ICO_IMAGE_TYPE,
|
|
53
54
|
F as MIME_TO_EXT,
|
|
54
|
-
|
|
55
|
+
w as MIN_ASPECT_RATIO,
|
|
55
56
|
L as MP4_VIDEO_EXT,
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
U as MP4_VIDEO_TYPE,
|
|
58
|
+
W as MS_UNIT,
|
|
58
59
|
a as PHOTO_CANVAS_CONTEXT,
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
H as PHOTO_LOADING_DELAY,
|
|
61
|
+
b as PHOTO_SMOOTHING_QUALITY,
|
|
62
|
+
v as PIXEL_UNIT,
|
|
63
|
+
o as PNG_IMAGE_EXT,
|
|
63
64
|
s as PNG_IMAGE_TYPE,
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
J as PRECENT_UNIT,
|
|
66
|
+
Z as RESET_DATA_DELAY,
|
|
66
67
|
D as SUPPORTED_IMAGE_EXTENSIONS,
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
C as SUPPORTED_IMAGE_MIME_TYPES,
|
|
69
|
+
A as SVG_IMAGE_EXT,
|
|
69
70
|
t as SVG_IMAGE_TYPE,
|
|
70
71
|
X as WEBM_VIDEO_EXT,
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
p as WEBM_VIDEO_TYPE,
|
|
73
|
+
n as WEBP_IMAGE_EXT,
|
|
73
74
|
S as WEBP_IMAGE_TYPE
|
|
74
75
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const e = {
|
|
2
2
|
en: {
|
|
3
|
-
upload: "Upload a
|
|
3
|
+
upload: "Upload a file",
|
|
4
4
|
drop: "Drop the file here",
|
|
5
5
|
"photo-crop": "Select the display area",
|
|
6
6
|
crop: "Save",
|
|
@@ -10,7 +10,8 @@ const e = {
|
|
|
10
10
|
"canvas-error": "Canvas context not found",
|
|
11
11
|
error: "Error",
|
|
12
12
|
"large-file": "The file is too large",
|
|
13
|
-
"maximum-size": "Maximum size",
|
|
13
|
+
"maximum-size": "Maximum size for a photo is",
|
|
14
|
+
"video-maximum-size": "Maximum size for a video is",
|
|
14
15
|
"file-ext-error": "Unsupported file extension",
|
|
15
16
|
"file-type-error": "Unsupported file type",
|
|
16
17
|
"mime-type": "MIME Type",
|
|
@@ -23,11 +24,11 @@ const e = {
|
|
|
23
24
|
skip: "Skip area selection",
|
|
24
25
|
aspect: "The aspect ratio of the cropped image must not be greater than 2",
|
|
25
26
|
close: "Close",
|
|
26
|
-
"not-uploaded": "
|
|
27
|
-
"some-not-uploaded": "Some
|
|
27
|
+
"not-uploaded": "Files were not uploaded",
|
|
28
|
+
"some-not-uploaded": "Some files were not uploaded"
|
|
28
29
|
},
|
|
29
30
|
ru: {
|
|
30
|
-
upload: "Загрузить
|
|
31
|
+
upload: "Загрузить файл",
|
|
31
32
|
drop: "Отпустите файл здесь",
|
|
32
33
|
"photo-crop": "Выберите отображаемую область",
|
|
33
34
|
crop: "Сохранить",
|
|
@@ -37,7 +38,8 @@ const e = {
|
|
|
37
38
|
"canvas-error": "Контекст канваса не найден",
|
|
38
39
|
error: "Ошибка",
|
|
39
40
|
"large-file": "Файл слишком большой",
|
|
40
|
-
"maximum-size": "Максимальный размер",
|
|
41
|
+
"maximum-size": "Максимальный размер для фотографии",
|
|
42
|
+
"video-maximum-size": "Максимальный размер для видео",
|
|
41
43
|
"file-ext-error": "Неподдерживаемое расширение файла",
|
|
42
44
|
"file-type-error": "Неподдерживаемый тип файла",
|
|
43
45
|
"mime-type": "MIME тип",
|
|
@@ -50,8 +52,8 @@ const e = {
|
|
|
50
52
|
skip: "Пропустить выбор области",
|
|
51
53
|
aspect: "Соотношение сторон обрезаемого изображения не должно быть больше 2",
|
|
52
54
|
close: "Закрыть",
|
|
53
|
-
"not-uploaded": "
|
|
54
|
-
"some-not-uploaded": "Некоторые
|
|
55
|
+
"not-uploaded": "Файлы не были загружены",
|
|
56
|
+
"some-not-uploaded": "Некоторые файлы не были загружены"
|
|
55
57
|
}
|
|
56
58
|
};
|
|
57
59
|
export {
|
|
@@ -1,295 +1,303 @@
|
|
|
1
|
-
import { jsxs as yo, Fragment as
|
|
1
|
+
import { jsxs as yo, Fragment as Mo, jsx as U } from "react/jsx-runtime";
|
|
2
2
|
import { useState as i, useRef as w } from "react";
|
|
3
|
-
import { D as
|
|
4
|
-
import { c as
|
|
5
|
-
import { localizedText as
|
|
6
|
-
import { EN_LOCALE as
|
|
7
|
-
import { DEFAULT_MIN_DIMENSION as
|
|
8
|
-
import { UploadDialog as
|
|
9
|
-
import { UploadButton as
|
|
10
|
-
import { ErrorUploadDialog as
|
|
11
|
-
import { isVideo as
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
|
|
3
|
+
import { D as No } from "../../index-BiffjjQq.js";
|
|
4
|
+
import { c as Vo } from "../../index-B2JRaoNz.js";
|
|
5
|
+
import { localizedText as bo } from "./locale.js";
|
|
6
|
+
import { EN_LOCALE as Ho } from "../../constants.js";
|
|
7
|
+
import { DEFAULT_MIN_DIMENSION as ko, DEFAULT_ASPECT_RATIO as zo, DEFAULT_TIMEOUT as jo, DEFAULT_FILE_MAX_SIZE as Wo, DEFAULT_VIDEO_FILE_MAX_SIZE as Bo, FULL_PROGRESS_VALUE as Q, PHOTO_LOADING_DELAY as Go, RESET_DATA_DELAY as d } from "./constants.js";
|
|
8
|
+
import { UploadDialog as Xo } from "./components/upload-dialog/upload-dialog.js";
|
|
9
|
+
import { UploadButton as Yo } from "./components/upload-button/upload-button.js";
|
|
10
|
+
import { ErrorUploadDialog as Zo } from "./components/error-upload-dialog/error-upload-dialog.js";
|
|
11
|
+
import { isVideo as $ } from "./utils/is-video.js";
|
|
12
|
+
import { validateVideoFile as oo } from "./utils/validate-video-file.js";
|
|
13
|
+
import { validatePhotoFile as eo } from "./utils/validate-photo-file.js";
|
|
14
|
+
import { readPhoto as to } from "./utils/read-photo.js";
|
|
15
|
+
import { getPhotoCrop as qo } from "./utils/get-photo-crop.js";
|
|
16
|
+
import { getCroppedSource as Jo } from "./utils/get-cropped-source.js";
|
|
17
|
+
import { getDefaultCroppedPhoto as ro } from "./utils/get-default-cropped-photo.js";
|
|
18
|
+
import '../../assets/photo-crop-uploader.css';const Ko = "_photoCropCanvas_1i4lr_1", Qo = {
|
|
19
|
+
photoCropCanvas: Ko
|
|
19
20
|
};
|
|
20
|
-
function
|
|
21
|
+
function Ee(a) {
|
|
21
22
|
const {
|
|
22
|
-
buttonClassname:
|
|
23
|
-
onStartUpload:
|
|
23
|
+
buttonClassname: so = "",
|
|
24
|
+
onStartUpload: no = () => {
|
|
24
25
|
},
|
|
25
|
-
onEndUpload:
|
|
26
|
+
onEndUpload: ao = () => {
|
|
26
27
|
},
|
|
27
|
-
onError:
|
|
28
|
+
onError: io = () => {
|
|
28
29
|
},
|
|
29
|
-
onStartCrop:
|
|
30
|
+
onStartCrop: lo = () => {
|
|
30
31
|
},
|
|
31
|
-
onDragOver:
|
|
32
|
+
onDragOver: co = () => {
|
|
32
33
|
},
|
|
33
|
-
onDragLeave:
|
|
34
|
+
onDragLeave: po = () => {
|
|
34
35
|
},
|
|
35
|
-
onDragDrop:
|
|
36
|
+
onDragDrop: uo = () => {
|
|
36
37
|
},
|
|
37
|
-
showErrorPopup:
|
|
38
|
-
minDimension:
|
|
39
|
-
aspectRatio: C =
|
|
40
|
-
locale: s =
|
|
41
|
-
timeout:
|
|
42
|
-
fileMaxSize:
|
|
43
|
-
|
|
38
|
+
showErrorPopup: fo = !1,
|
|
39
|
+
minDimension: l = ko,
|
|
40
|
+
aspectRatio: C = zo,
|
|
41
|
+
locale: s = Ho,
|
|
42
|
+
timeout: M = jo,
|
|
43
|
+
fileMaxSize: N = Wo,
|
|
44
|
+
videoFileMaxSize: V = Bo,
|
|
45
|
+
allowedExtensions: A,
|
|
44
46
|
allowedMimeTypes: b,
|
|
45
|
-
circular:
|
|
46
|
-
width:
|
|
47
|
-
keepSelection:
|
|
48
|
-
uploadButton:
|
|
47
|
+
circular: ho,
|
|
48
|
+
width: mo,
|
|
49
|
+
keepSelection: Co,
|
|
50
|
+
uploadButton: go,
|
|
49
51
|
multiple: g = !1,
|
|
50
52
|
fromSources: H,
|
|
51
|
-
withVideoUploaded:
|
|
52
|
-
returnCropParams:
|
|
53
|
-
dialogClassname:
|
|
54
|
-
...
|
|
53
|
+
withVideoUploaded: v = !1,
|
|
54
|
+
returnCropParams: Eo = !1,
|
|
55
|
+
dialogClassname: k,
|
|
56
|
+
...Po
|
|
55
57
|
} = a, {
|
|
56
|
-
onEndCrop:
|
|
57
|
-
onClose:
|
|
58
|
-
...
|
|
59
|
-
} =
|
|
58
|
+
onEndCrop: $o,
|
|
59
|
+
onClose: oe,
|
|
60
|
+
...Do
|
|
61
|
+
} = Po, [So, E] = i(!1), [P, D] = i([]), [x, I] = i([]), f = w([]), h = w([]), [p, z] = i(0), j = w(null), W = w(null), [c, O] = i(!1), [Lo, B] = i(0), [G, X] = i(""), [_o, S] = i([]), [To, Y] = i(!1), Uo = So || c && g, wo = () => {
|
|
60
62
|
S([]);
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
+
}, F = (o = []) => {
|
|
64
|
+
c || (a.returnCropParams === !0 && a.onClose?.(
|
|
63
65
|
o,
|
|
64
66
|
f.current,
|
|
65
67
|
h.current
|
|
66
|
-
), E(!1), setTimeout(() => S([]),
|
|
68
|
+
), E(!1), setTimeout(() => S([]), d), setTimeout(() => D([]), d), setTimeout(() => {
|
|
67
69
|
f.current = [], h.current = [];
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
|
|
70
|
+
}, d));
|
|
71
|
+
}, R = (o = []) => {
|
|
72
|
+
c || (a.returnCropParams || a.onClose?.(
|
|
71
73
|
o,
|
|
72
74
|
f.current,
|
|
73
75
|
h.current
|
|
74
|
-
), E(!1), setTimeout(() => S([]),
|
|
76
|
+
), E(!1), setTimeout(() => S([]), d), setTimeout(() => D([]), d), setTimeout(() => {
|
|
75
77
|
f.current = [], h.current = [];
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
},
|
|
78
|
+
}, d));
|
|
79
|
+
}, Z = () => {
|
|
80
|
+
c || (a.returnCropParams === !0 ? F([]) : R([]));
|
|
81
|
+
}, Ao = () => {
|
|
80
82
|
Y(!1);
|
|
81
|
-
}, L = (o,
|
|
82
|
-
|
|
83
|
-
},
|
|
84
|
-
o instanceof Error && (console.warn(o.message),
|
|
85
|
-
},
|
|
86
|
-
const { files:
|
|
87
|
-
if (
|
|
83
|
+
}, L = (o, t = o, e = [], r = !1) => {
|
|
84
|
+
ao(o), X(""), D(o), I(Array(o.length)), z(0), E(!0), f.current = t, h.current = e, !o.length && !r && Z();
|
|
85
|
+
}, y = (o) => {
|
|
86
|
+
o instanceof Error && (console.warn(o.message), io(o), X(o.message), Y(!0), D([]), E(!1), f.current = [], h.current = []);
|
|
87
|
+
}, vo = async (o) => {
|
|
88
|
+
const { files: t } = o.target;
|
|
89
|
+
if (t?.length && !c)
|
|
88
90
|
try {
|
|
89
|
-
if (O(!0),
|
|
90
|
-
const e = Array.from(
|
|
91
|
-
for (const
|
|
92
|
-
const Ro =
|
|
91
|
+
if (O(!0), no(), g) {
|
|
92
|
+
const e = Array.from(t), r = Q / e.length, _ = [], u = [], J = [], T = [];
|
|
93
|
+
for (const m of e) {
|
|
94
|
+
const Ro = $(m);
|
|
93
95
|
try {
|
|
94
|
-
if (
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
if (v && Ro) {
|
|
97
|
+
oo(m, V, s);
|
|
98
|
+
const n = URL.createObjectURL(m);
|
|
99
|
+
J.push(u.length), u.push(n);
|
|
97
100
|
} else {
|
|
98
|
-
|
|
99
|
-
|
|
101
|
+
eo(
|
|
102
|
+
m,
|
|
100
103
|
{
|
|
101
|
-
maxSize:
|
|
102
|
-
allowedExtensions:
|
|
104
|
+
maxSize: N,
|
|
105
|
+
allowedExtensions: A,
|
|
103
106
|
allowedMimeTypes: b
|
|
104
107
|
},
|
|
105
108
|
s
|
|
106
109
|
);
|
|
107
|
-
const n = await
|
|
108
|
-
|
|
109
|
-
|
|
110
|
+
const n = await to(
|
|
111
|
+
m,
|
|
112
|
+
l,
|
|
110
113
|
s,
|
|
111
|
-
|
|
114
|
+
M
|
|
112
115
|
);
|
|
113
|
-
|
|
116
|
+
_.push(n), u.push(n);
|
|
114
117
|
}
|
|
115
118
|
} catch (n) {
|
|
116
|
-
let
|
|
117
|
-
n instanceof Error && (
|
|
118
|
-
photoName:
|
|
119
|
-
errorMessage:
|
|
119
|
+
let K = "";
|
|
120
|
+
n instanceof Error && (K = n.message), T.push({
|
|
121
|
+
photoName: m.name,
|
|
122
|
+
errorMessage: K
|
|
120
123
|
});
|
|
121
124
|
}
|
|
122
|
-
|
|
123
|
-
(n) => Math.min(
|
|
125
|
+
B(
|
|
126
|
+
(n) => Math.min(Q, n + r)
|
|
124
127
|
), await new Promise((n) => setTimeout(n, 0));
|
|
125
128
|
}
|
|
126
129
|
if (H?.length)
|
|
127
|
-
throw new Error(
|
|
128
|
-
S(
|
|
130
|
+
throw new Error(T[0]?.errorMessage);
|
|
131
|
+
S(T), L(_, u, J, T.length > 0);
|
|
129
132
|
} else {
|
|
130
|
-
const e =
|
|
131
|
-
if (
|
|
132
|
-
|
|
133
|
-
|
|
133
|
+
const e = t[0];
|
|
134
|
+
if (v && $(e)) {
|
|
135
|
+
oo(e, V, s);
|
|
136
|
+
const r = URL.createObjectURL(e);
|
|
137
|
+
L([], [r], [0]);
|
|
134
138
|
} else {
|
|
135
|
-
|
|
139
|
+
eo(
|
|
136
140
|
e,
|
|
137
|
-
{ maxSize:
|
|
141
|
+
{ maxSize: N, allowedExtensions: A, allowedMimeTypes: b },
|
|
138
142
|
s
|
|
139
143
|
);
|
|
140
|
-
const
|
|
141
|
-
L([
|
|
144
|
+
const r = await to(e, l, s, M);
|
|
145
|
+
L([r]);
|
|
142
146
|
}
|
|
143
147
|
}
|
|
144
148
|
} catch (e) {
|
|
145
|
-
|
|
149
|
+
y(e);
|
|
146
150
|
} finally {
|
|
147
151
|
g ? setTimeout(() => {
|
|
148
|
-
o.target.value = "",
|
|
149
|
-
},
|
|
152
|
+
o.target.value = "", B(0), O(!1);
|
|
153
|
+
}, Go) : (o.target.value = "", O(!1));
|
|
150
154
|
}
|
|
151
|
-
},
|
|
152
|
-
const { width:
|
|
153
|
-
|
|
154
|
-
const u = [...
|
|
155
|
-
return u[p] =
|
|
155
|
+
}, xo = (o) => {
|
|
156
|
+
const { width: t, height: e } = o.currentTarget, r = qo(t, e, l, C);
|
|
157
|
+
I((_) => {
|
|
158
|
+
const u = [..._];
|
|
159
|
+
return u[p] = r, u;
|
|
156
160
|
});
|
|
157
|
-
},
|
|
158
|
-
|
|
159
|
-
const
|
|
160
|
-
return
|
|
161
|
+
}, Io = (o, t) => {
|
|
162
|
+
I((e) => {
|
|
163
|
+
const r = [...e];
|
|
164
|
+
return r[p] = t, r;
|
|
161
165
|
});
|
|
162
|
-
},
|
|
163
|
-
const o =
|
|
164
|
-
if (o &&
|
|
166
|
+
}, q = () => {
|
|
167
|
+
const o = W.current, t = j.current;
|
|
168
|
+
if (o && t && x)
|
|
165
169
|
try {
|
|
166
170
|
const e = x[p];
|
|
167
171
|
if (!e) return !1;
|
|
168
|
-
if (
|
|
169
|
-
const
|
|
170
|
-
|
|
172
|
+
if (lo(), a.returnCropParams === !0) {
|
|
173
|
+
const r = No(
|
|
174
|
+
e,
|
|
175
|
+
t.naturalWidth,
|
|
176
|
+
t.naturalHeight
|
|
177
|
+
);
|
|
178
|
+
a.onEndCrop?.(r), p >= P.length - 1 && F();
|
|
171
179
|
} else {
|
|
172
|
-
const
|
|
173
|
-
|
|
180
|
+
const r = Jo(
|
|
181
|
+
t,
|
|
174
182
|
o,
|
|
175
183
|
e,
|
|
176
184
|
s
|
|
177
185
|
);
|
|
178
|
-
a.onEndCrop?.(
|
|
186
|
+
a.onEndCrop?.(r), p >= P.length - 1 && R();
|
|
179
187
|
}
|
|
180
188
|
return !0;
|
|
181
189
|
} catch (e) {
|
|
182
|
-
return e instanceof Error && (console.warn(e),
|
|
190
|
+
return e instanceof Error && (console.warn(e), y(e)), !1;
|
|
183
191
|
}
|
|
184
192
|
else
|
|
185
193
|
return !1;
|
|
186
|
-
},
|
|
187
|
-
|
|
188
|
-
},
|
|
194
|
+
}, Oo = () => {
|
|
195
|
+
q() && z((t) => t + 1);
|
|
196
|
+
}, Fo = async () => {
|
|
189
197
|
const o = P.slice(p);
|
|
190
198
|
try {
|
|
191
|
-
if (
|
|
192
|
-
const
|
|
199
|
+
if (Eo) {
|
|
200
|
+
const t = await Promise.all(
|
|
193
201
|
o.map(
|
|
194
|
-
(e) =>
|
|
202
|
+
(e) => ro(
|
|
195
203
|
e,
|
|
196
|
-
|
|
204
|
+
l,
|
|
197
205
|
C,
|
|
198
206
|
s,
|
|
199
207
|
!0
|
|
200
208
|
)
|
|
201
209
|
)
|
|
202
210
|
);
|
|
203
|
-
|
|
211
|
+
F(t);
|
|
204
212
|
} else {
|
|
205
|
-
const
|
|
213
|
+
const t = await Promise.all(
|
|
206
214
|
o.map(
|
|
207
|
-
(e) =>
|
|
215
|
+
(e) => ro(
|
|
208
216
|
e,
|
|
209
|
-
|
|
217
|
+
l,
|
|
210
218
|
C,
|
|
211
219
|
s,
|
|
212
220
|
!1
|
|
213
221
|
)
|
|
214
222
|
)
|
|
215
223
|
);
|
|
216
|
-
|
|
224
|
+
R(t);
|
|
217
225
|
}
|
|
218
|
-
} catch (
|
|
219
|
-
|
|
226
|
+
} catch (t) {
|
|
227
|
+
y(t);
|
|
220
228
|
}
|
|
221
229
|
};
|
|
222
|
-
return /* @__PURE__ */ yo(
|
|
223
|
-
/* @__PURE__ */
|
|
224
|
-
|
|
230
|
+
return /* @__PURE__ */ yo(Mo, { children: [
|
|
231
|
+
/* @__PURE__ */ U(
|
|
232
|
+
Yo,
|
|
225
233
|
{
|
|
226
|
-
onChange:
|
|
234
|
+
onChange: vo,
|
|
227
235
|
onPhotoDataLoaded: L,
|
|
228
|
-
buttonClassname:
|
|
229
|
-
disabled:
|
|
230
|
-
buttonDisabled:
|
|
236
|
+
buttonClassname: so,
|
|
237
|
+
disabled: c,
|
|
238
|
+
buttonDisabled: c,
|
|
231
239
|
locale: s,
|
|
232
|
-
width:
|
|
233
|
-
allowedExtensions:
|
|
234
|
-
onDragDrop:
|
|
235
|
-
onDragLeave:
|
|
236
|
-
onDragOver:
|
|
237
|
-
button:
|
|
240
|
+
width: mo,
|
|
241
|
+
allowedExtensions: A,
|
|
242
|
+
onDragDrop: uo,
|
|
243
|
+
onDragLeave: po,
|
|
244
|
+
onDragOver: co,
|
|
245
|
+
button: go,
|
|
238
246
|
multiple: g,
|
|
239
247
|
fromSources: H,
|
|
240
|
-
withVideoUploaded:
|
|
241
|
-
...
|
|
242
|
-
children:
|
|
248
|
+
withVideoUploaded: v,
|
|
249
|
+
...Do,
|
|
250
|
+
children: bo[s].upload
|
|
243
251
|
}
|
|
244
252
|
),
|
|
245
|
-
/* @__PURE__ */
|
|
246
|
-
|
|
253
|
+
/* @__PURE__ */ U(
|
|
254
|
+
Xo,
|
|
247
255
|
{
|
|
248
|
-
open:
|
|
249
|
-
className:
|
|
250
|
-
photoSourceLoading:
|
|
251
|
-
loadingValue:
|
|
252
|
-
errors:
|
|
256
|
+
open: Uo,
|
|
257
|
+
className: k,
|
|
258
|
+
photoSourceLoading: c,
|
|
259
|
+
loadingValue: Lo,
|
|
260
|
+
errors: _o,
|
|
253
261
|
photoCrops: x,
|
|
254
262
|
photoSources: P,
|
|
255
|
-
onNextPhoto:
|
|
256
|
-
onSkipCrop:
|
|
257
|
-
onClearErrors:
|
|
258
|
-
photoError:
|
|
259
|
-
onCloseDialogHandler:
|
|
260
|
-
onCropChange:
|
|
261
|
-
onPhotoCrop:
|
|
262
|
-
onPhotoLoad:
|
|
263
|
+
onNextPhoto: Oo,
|
|
264
|
+
onSkipCrop: Fo,
|
|
265
|
+
onClearErrors: wo,
|
|
266
|
+
photoError: G,
|
|
267
|
+
onCloseDialogHandler: Z,
|
|
268
|
+
onCropChange: Io,
|
|
269
|
+
onPhotoCrop: q,
|
|
270
|
+
onPhotoLoad: xo,
|
|
263
271
|
imageRef: j,
|
|
264
|
-
minDimension:
|
|
272
|
+
minDimension: l,
|
|
265
273
|
aspectRatio: C,
|
|
266
274
|
locale: s,
|
|
267
|
-
circular:
|
|
268
|
-
keepSelection:
|
|
275
|
+
circular: ho,
|
|
276
|
+
keepSelection: Co,
|
|
269
277
|
photoIndex: p
|
|
270
278
|
}
|
|
271
279
|
),
|
|
272
|
-
/* @__PURE__ */
|
|
273
|
-
|
|
280
|
+
/* @__PURE__ */ U(
|
|
281
|
+
Zo,
|
|
274
282
|
{
|
|
275
|
-
className:
|
|
276
|
-
open:
|
|
277
|
-
photoError:
|
|
278
|
-
onCloseErrorDialog:
|
|
283
|
+
className: k,
|
|
284
|
+
open: fo && To,
|
|
285
|
+
photoError: G,
|
|
286
|
+
onCloseErrorDialog: Ao,
|
|
279
287
|
locale: s
|
|
280
288
|
}
|
|
281
289
|
),
|
|
282
|
-
/* @__PURE__ */
|
|
290
|
+
/* @__PURE__ */ U(
|
|
283
291
|
"canvas",
|
|
284
292
|
{
|
|
285
|
-
className:
|
|
286
|
-
width:
|
|
287
|
-
height:
|
|
288
|
-
ref:
|
|
293
|
+
className: Vo(Qo.photoCropCanvas),
|
|
294
|
+
width: l,
|
|
295
|
+
height: l,
|
|
296
|
+
ref: W
|
|
289
297
|
}
|
|
290
298
|
)
|
|
291
299
|
] });
|
|
292
300
|
}
|
|
293
301
|
export {
|
|
294
|
-
|
|
302
|
+
Ee as PhotoCropUploader
|
|
295
303
|
};
|
|
@@ -5,3 +5,4 @@ export { validatePhotoFile } from './validate-photo-file';
|
|
|
5
5
|
export { getDefaultCroppedPhoto } from './get-default-cropped-photo';
|
|
6
6
|
export { drawCroppedImage } from './draw-cropped-image';
|
|
7
7
|
export { isVideo } from './is-video';
|
|
8
|
+
export { validateVideoFile } from './validate-video-file';
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import { readPhoto as
|
|
1
|
+
import { readPhoto as r } from "./read-photo.js";
|
|
2
2
|
import { getPhotoCrop as p } from "./get-photo-crop.js";
|
|
3
|
-
import { getCroppedSource as
|
|
4
|
-
import { validatePhotoFile as
|
|
5
|
-
import { getDefaultCroppedPhoto as
|
|
6
|
-
import { drawCroppedImage as
|
|
7
|
-
import { isVideo as
|
|
3
|
+
import { getCroppedSource as f } from "./get-cropped-source.js";
|
|
4
|
+
import { validatePhotoFile as a } from "./validate-photo-file.js";
|
|
5
|
+
import { getDefaultCroppedPhoto as i } from "./get-default-cropped-photo.js";
|
|
6
|
+
import { drawCroppedImage as g } from "./draw-cropped-image.js";
|
|
7
|
+
import { isVideo as C } from "./is-video.js";
|
|
8
|
+
import { validateVideoFile as u } from "./validate-video-file.js";
|
|
8
9
|
export {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
g as drawCroppedImage,
|
|
11
|
+
f as getCroppedSource,
|
|
12
|
+
i as getDefaultCroppedPhoto,
|
|
12
13
|
p as getPhotoCrop,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
C as isVideo,
|
|
15
|
+
r as readPhoto,
|
|
16
|
+
a as validatePhotoFile,
|
|
17
|
+
u as validateVideoFile
|
|
16
18
|
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { localizedText as t } from "../locale.js";
|
|
2
|
+
import { EN_LOCALE as f, BYTE_TO_KILOBYTE as e } from "../../../constants.js";
|
|
3
|
+
import { MB_UNIT as T, MB_FRACTION_DIGITS as l } from "../constants.js";
|
|
4
|
+
import { PhotoFileError as p } from "../errors/photo-file.error.js";
|
|
5
|
+
const I = (m, o, i = f) => {
|
|
6
|
+
const r = [];
|
|
7
|
+
if (o && m.size > o && r.push(
|
|
8
|
+
`${t[i]["large-file"]}. ${t[i]["video-maximum-size"]}: ${(o / e / e).toFixed(
|
|
9
|
+
l
|
|
10
|
+
)}${T}`
|
|
11
|
+
), r.length)
|
|
12
|
+
throw p.get(r);
|
|
13
|
+
};
|
|
14
|
+
export {
|
|
15
|
+
I as validateVideoFile
|
|
16
|
+
};
|