@hai-dev/ui-kit 1.1.4 → 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 +196 -185
- package/dist/components/photo-crop-uploader/types.d.ts +2 -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,292 +1,303 @@
|
|
|
1
|
-
import { jsxs 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:
|
|
41
|
-
timeout: M =
|
|
42
|
-
fileMaxSize: N =
|
|
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
|
-
|
|
53
|
+
withVideoUploaded: v = !1,
|
|
54
|
+
returnCropParams: Eo = !1,
|
|
55
|
+
dialogClassname: k,
|
|
56
|
+
...Po
|
|
54
57
|
} = a, {
|
|
55
|
-
onEndCrop:
|
|
56
|
-
onClose:
|
|
57
|
-
...
|
|
58
|
-
} =
|
|
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 = () => {
|
|
59
62
|
S([]);
|
|
60
|
-
},
|
|
61
|
-
|
|
63
|
+
}, F = (o = []) => {
|
|
64
|
+
c || (a.returnCropParams === !0 && a.onClose?.(
|
|
62
65
|
o,
|
|
63
66
|
f.current,
|
|
64
67
|
h.current
|
|
65
|
-
), E(!1), setTimeout(() => S([]),
|
|
68
|
+
), E(!1), setTimeout(() => S([]), d), setTimeout(() => D([]), d), setTimeout(() => {
|
|
66
69
|
f.current = [], h.current = [];
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
|
|
70
|
+
}, d));
|
|
71
|
+
}, R = (o = []) => {
|
|
72
|
+
c || (a.returnCropParams || a.onClose?.(
|
|
70
73
|
o,
|
|
71
74
|
f.current,
|
|
72
75
|
h.current
|
|
73
|
-
), E(!1), setTimeout(() => S([]),
|
|
76
|
+
), E(!1), setTimeout(() => S([]), d), setTimeout(() => D([]), d), setTimeout(() => {
|
|
74
77
|
f.current = [], h.current = [];
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
|
|
78
|
-
},
|
|
79
|
-
|
|
80
|
-
}, L = (o,
|
|
81
|
-
|
|
82
|
-
},
|
|
83
|
-
o instanceof Error && (console.warn(o.message),
|
|
84
|
-
},
|
|
85
|
-
const { files:
|
|
86
|
-
if (
|
|
78
|
+
}, d));
|
|
79
|
+
}, Z = () => {
|
|
80
|
+
c || (a.returnCropParams === !0 ? F([]) : R([]));
|
|
81
|
+
}, Ao = () => {
|
|
82
|
+
Y(!1);
|
|
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)
|
|
87
90
|
try {
|
|
88
|
-
if (O(!0),
|
|
89
|
-
const e = Array.from(
|
|
90
|
-
for (const
|
|
91
|
-
const
|
|
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);
|
|
92
95
|
try {
|
|
93
|
-
if (
|
|
94
|
-
|
|
95
|
-
|
|
96
|
+
if (v && Ro) {
|
|
97
|
+
oo(m, V, s);
|
|
98
|
+
const n = URL.createObjectURL(m);
|
|
99
|
+
J.push(u.length), u.push(n);
|
|
96
100
|
} else {
|
|
97
|
-
|
|
98
|
-
|
|
101
|
+
eo(
|
|
102
|
+
m,
|
|
99
103
|
{
|
|
100
104
|
maxSize: N,
|
|
101
|
-
allowedExtensions:
|
|
105
|
+
allowedExtensions: A,
|
|
102
106
|
allowedMimeTypes: b
|
|
103
107
|
},
|
|
104
|
-
|
|
108
|
+
s
|
|
105
109
|
);
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
+
const n = await to(
|
|
111
|
+
m,
|
|
112
|
+
l,
|
|
113
|
+
s,
|
|
110
114
|
M
|
|
111
115
|
);
|
|
112
|
-
|
|
116
|
+
_.push(n), u.push(n);
|
|
113
117
|
}
|
|
114
|
-
} catch (
|
|
115
|
-
let
|
|
116
|
-
|
|
117
|
-
photoName:
|
|
118
|
-
errorMessage:
|
|
118
|
+
} catch (n) {
|
|
119
|
+
let K = "";
|
|
120
|
+
n instanceof Error && (K = n.message), T.push({
|
|
121
|
+
photoName: m.name,
|
|
122
|
+
errorMessage: K
|
|
119
123
|
});
|
|
120
124
|
}
|
|
121
|
-
|
|
122
|
-
(
|
|
123
|
-
), await new Promise((
|
|
125
|
+
B(
|
|
126
|
+
(n) => Math.min(Q, n + r)
|
|
127
|
+
), await new Promise((n) => setTimeout(n, 0));
|
|
124
128
|
}
|
|
125
129
|
if (H?.length)
|
|
126
|
-
throw new Error(
|
|
127
|
-
S(
|
|
130
|
+
throw new Error(T[0]?.errorMessage);
|
|
131
|
+
S(T), L(_, u, J, T.length > 0);
|
|
128
132
|
} else {
|
|
129
|
-
const e =
|
|
130
|
-
if (
|
|
131
|
-
|
|
132
|
-
|
|
133
|
+
const e = t[0];
|
|
134
|
+
if (v && $(e)) {
|
|
135
|
+
oo(e, V, s);
|
|
136
|
+
const r = URL.createObjectURL(e);
|
|
137
|
+
L([], [r], [0]);
|
|
133
138
|
} else {
|
|
134
|
-
|
|
139
|
+
eo(
|
|
135
140
|
e,
|
|
136
|
-
{ maxSize: N, allowedExtensions:
|
|
137
|
-
|
|
141
|
+
{ maxSize: N, allowedExtensions: A, allowedMimeTypes: b },
|
|
142
|
+
s
|
|
138
143
|
);
|
|
139
|
-
const
|
|
140
|
-
L([
|
|
144
|
+
const r = await to(e, l, s, M);
|
|
145
|
+
L([r]);
|
|
141
146
|
}
|
|
142
147
|
}
|
|
143
148
|
} catch (e) {
|
|
144
|
-
|
|
149
|
+
y(e);
|
|
145
150
|
} finally {
|
|
146
151
|
g ? setTimeout(() => {
|
|
147
|
-
o.target.value = "",
|
|
148
|
-
},
|
|
152
|
+
o.target.value = "", B(0), O(!1);
|
|
153
|
+
}, Go) : (o.target.value = "", O(!1));
|
|
149
154
|
}
|
|
150
|
-
},
|
|
151
|
-
const { width:
|
|
152
|
-
|
|
153
|
-
const u = [...
|
|
154
|
-
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;
|
|
155
160
|
});
|
|
156
|
-
},
|
|
157
|
-
|
|
158
|
-
const
|
|
159
|
-
return
|
|
161
|
+
}, Io = (o, t) => {
|
|
162
|
+
I((e) => {
|
|
163
|
+
const r = [...e];
|
|
164
|
+
return r[p] = t, r;
|
|
160
165
|
});
|
|
161
|
-
},
|
|
162
|
-
const o =
|
|
163
|
-
if (o &&
|
|
166
|
+
}, q = () => {
|
|
167
|
+
const o = W.current, t = j.current;
|
|
168
|
+
if (o && t && x)
|
|
164
169
|
try {
|
|
165
170
|
const e = x[p];
|
|
166
171
|
if (!e) return !1;
|
|
167
|
-
if (
|
|
168
|
-
const
|
|
169
|
-
|
|
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();
|
|
170
179
|
} else {
|
|
171
|
-
const
|
|
172
|
-
|
|
180
|
+
const r = Jo(
|
|
181
|
+
t,
|
|
173
182
|
o,
|
|
174
183
|
e,
|
|
175
|
-
|
|
184
|
+
s
|
|
176
185
|
);
|
|
177
|
-
a.onEndCrop?.(
|
|
186
|
+
a.onEndCrop?.(r), p >= P.length - 1 && R();
|
|
178
187
|
}
|
|
179
188
|
return !0;
|
|
180
189
|
} catch (e) {
|
|
181
|
-
return e instanceof Error && (console.warn(e),
|
|
190
|
+
return e instanceof Error && (console.warn(e), y(e)), !1;
|
|
182
191
|
}
|
|
183
192
|
else
|
|
184
193
|
return !1;
|
|
185
|
-
},
|
|
186
|
-
|
|
187
|
-
},
|
|
194
|
+
}, Oo = () => {
|
|
195
|
+
q() && z((t) => t + 1);
|
|
196
|
+
}, Fo = async () => {
|
|
188
197
|
const o = P.slice(p);
|
|
189
198
|
try {
|
|
190
|
-
if (
|
|
191
|
-
const
|
|
199
|
+
if (Eo) {
|
|
200
|
+
const t = await Promise.all(
|
|
192
201
|
o.map(
|
|
193
|
-
(e) =>
|
|
202
|
+
(e) => ro(
|
|
194
203
|
e,
|
|
195
|
-
|
|
204
|
+
l,
|
|
196
205
|
C,
|
|
197
|
-
|
|
206
|
+
s,
|
|
198
207
|
!0
|
|
199
208
|
)
|
|
200
209
|
)
|
|
201
210
|
);
|
|
202
|
-
|
|
211
|
+
F(t);
|
|
203
212
|
} else {
|
|
204
|
-
const
|
|
213
|
+
const t = await Promise.all(
|
|
205
214
|
o.map(
|
|
206
|
-
(e) =>
|
|
215
|
+
(e) => ro(
|
|
207
216
|
e,
|
|
208
|
-
|
|
217
|
+
l,
|
|
209
218
|
C,
|
|
210
|
-
|
|
219
|
+
s,
|
|
211
220
|
!1
|
|
212
221
|
)
|
|
213
222
|
)
|
|
214
223
|
);
|
|
215
|
-
|
|
224
|
+
R(t);
|
|
216
225
|
}
|
|
217
|
-
} catch (
|
|
218
|
-
|
|
226
|
+
} catch (t) {
|
|
227
|
+
y(t);
|
|
219
228
|
}
|
|
220
229
|
};
|
|
221
|
-
return /* @__PURE__ */
|
|
222
|
-
/* @__PURE__ */
|
|
223
|
-
|
|
230
|
+
return /* @__PURE__ */ yo(Mo, { children: [
|
|
231
|
+
/* @__PURE__ */ U(
|
|
232
|
+
Yo,
|
|
224
233
|
{
|
|
225
|
-
onChange:
|
|
234
|
+
onChange: vo,
|
|
226
235
|
onPhotoDataLoaded: L,
|
|
227
|
-
buttonClassname:
|
|
228
|
-
disabled:
|
|
229
|
-
buttonDisabled:
|
|
230
|
-
locale:
|
|
231
|
-
width:
|
|
232
|
-
allowedExtensions:
|
|
233
|
-
onDragDrop:
|
|
234
|
-
onDragLeave:
|
|
235
|
-
onDragOver:
|
|
236
|
-
button:
|
|
236
|
+
buttonClassname: so,
|
|
237
|
+
disabled: c,
|
|
238
|
+
buttonDisabled: c,
|
|
239
|
+
locale: s,
|
|
240
|
+
width: mo,
|
|
241
|
+
allowedExtensions: A,
|
|
242
|
+
onDragDrop: uo,
|
|
243
|
+
onDragLeave: po,
|
|
244
|
+
onDragOver: co,
|
|
245
|
+
button: go,
|
|
237
246
|
multiple: g,
|
|
238
247
|
fromSources: H,
|
|
239
|
-
withVideoUploaded:
|
|
240
|
-
...
|
|
241
|
-
children:
|
|
248
|
+
withVideoUploaded: v,
|
|
249
|
+
...Do,
|
|
250
|
+
children: bo[s].upload
|
|
242
251
|
}
|
|
243
252
|
),
|
|
244
|
-
/* @__PURE__ */
|
|
245
|
-
|
|
253
|
+
/* @__PURE__ */ U(
|
|
254
|
+
Xo,
|
|
246
255
|
{
|
|
247
|
-
open:
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
256
|
+
open: Uo,
|
|
257
|
+
className: k,
|
|
258
|
+
photoSourceLoading: c,
|
|
259
|
+
loadingValue: Lo,
|
|
260
|
+
errors: _o,
|
|
251
261
|
photoCrops: x,
|
|
252
262
|
photoSources: P,
|
|
253
|
-
onNextPhoto:
|
|
254
|
-
onSkipCrop:
|
|
255
|
-
onClearErrors:
|
|
256
|
-
photoError:
|
|
257
|
-
onCloseDialogHandler:
|
|
258
|
-
onCropChange:
|
|
259
|
-
onPhotoCrop:
|
|
260
|
-
onPhotoLoad:
|
|
261
|
-
imageRef:
|
|
262
|
-
minDimension:
|
|
263
|
+
onNextPhoto: Oo,
|
|
264
|
+
onSkipCrop: Fo,
|
|
265
|
+
onClearErrors: wo,
|
|
266
|
+
photoError: G,
|
|
267
|
+
onCloseDialogHandler: Z,
|
|
268
|
+
onCropChange: Io,
|
|
269
|
+
onPhotoCrop: q,
|
|
270
|
+
onPhotoLoad: xo,
|
|
271
|
+
imageRef: j,
|
|
272
|
+
minDimension: l,
|
|
263
273
|
aspectRatio: C,
|
|
264
|
-
locale:
|
|
265
|
-
circular:
|
|
266
|
-
keepSelection:
|
|
274
|
+
locale: s,
|
|
275
|
+
circular: ho,
|
|
276
|
+
keepSelection: Co,
|
|
267
277
|
photoIndex: p
|
|
268
278
|
}
|
|
269
279
|
),
|
|
270
|
-
/* @__PURE__ */
|
|
271
|
-
|
|
280
|
+
/* @__PURE__ */ U(
|
|
281
|
+
Zo,
|
|
272
282
|
{
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
283
|
+
className: k,
|
|
284
|
+
open: fo && To,
|
|
285
|
+
photoError: G,
|
|
286
|
+
onCloseErrorDialog: Ao,
|
|
287
|
+
locale: s
|
|
277
288
|
}
|
|
278
289
|
),
|
|
279
|
-
/* @__PURE__ */
|
|
290
|
+
/* @__PURE__ */ U(
|
|
280
291
|
"canvas",
|
|
281
292
|
{
|
|
282
|
-
className:
|
|
283
|
-
width:
|
|
284
|
-
height:
|
|
285
|
-
ref:
|
|
293
|
+
className: Vo(Qo.photoCropCanvas),
|
|
294
|
+
width: l,
|
|
295
|
+
height: l,
|
|
296
|
+
ref: W
|
|
286
297
|
}
|
|
287
298
|
)
|
|
288
299
|
] });
|
|
289
300
|
}
|
|
290
301
|
export {
|
|
291
|
-
|
|
302
|
+
Ee as PhotoCropUploader
|
|
292
303
|
};
|
|
@@ -41,6 +41,7 @@ export type PhotoCropUploaderCustomProps = {
|
|
|
41
41
|
locale?: 'ru' | 'en';
|
|
42
42
|
timeout?: number;
|
|
43
43
|
fileMaxSize?: number;
|
|
44
|
+
videoFileMaxSize?: number;
|
|
44
45
|
allowedExtensions?: PhotoExtension[];
|
|
45
46
|
allowedMimeTypes?: PhotoMimeType[];
|
|
46
47
|
circular?: boolean;
|
|
@@ -49,6 +50,7 @@ export type PhotoCropUploaderCustomProps = {
|
|
|
49
50
|
uploadButton?: ReactNode;
|
|
50
51
|
fromSources?: PhotoDataUrl[];
|
|
51
52
|
withVideoUploaded?: boolean;
|
|
53
|
+
dialogClassname?: string;
|
|
52
54
|
};
|
|
53
55
|
export type PhotoCropUploaderProps = PhotoCropUploaderCustomProps & CropProps & InputHTMLAttributes<HTMLInputElement>;
|
|
54
56
|
export type PhotoCropUploaderLocaleText = Record<Locale, Record<string, string>>;
|
|
@@ -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
|
+
};
|