@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.
@@ -1,5 +1,5 @@
1
1
  import { jsxs as L, jsx as a, Fragment as _ } from "react/jsx-runtime";
2
- import * as P from "react";
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 T } from "../../../../Dialog-DqFOpJyx.js";
12
- import { a as D, b as O, D as G } from "../../../../DialogTitle-CeM_Z851.js";
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 E } from "../../../button/button.js";
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__ */ P.forwardRef(function(e, r) {
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) => P.Children.toArray(o.children).some((r) => /* @__PURE__ */ P.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(`
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: k,
328
- ...x
327
+ errors: x,
328
+ ...T
329
329
  } = o, S = r.slice(C).length > 1;
330
- return h || !r.length ? /* @__PURE__ */ a(
331
- T,
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
- ...x,
335
+ ...T,
336
336
  children: /* @__PURE__ */ a(D, { className: i(n.content), children: /* @__PURE__ */ a(J, { value: F }) })
337
337
  }
338
- ) : k?.length ? /* @__PURE__ */ a(
339
- T,
338
+ ) : x?.length ? /* @__PURE__ */ a(
339
+ O,
340
340
  {
341
341
  className: i(n.dialog, d),
342
342
  onClose: e,
343
- ...x,
343
+ ...T,
344
344
  children: /* @__PURE__ */ a(
345
345
  V,
346
346
  {
347
347
  locale: l,
348
348
  photoSources: r,
349
- errors: k,
349
+ errors: x,
350
350
  onCloseDialogHandler: e,
351
351
  onClearErrors: v
352
352
  }
353
353
  )
354
354
  }
355
355
  ) : /* @__PURE__ */ L(
356
- T,
356
+ O,
357
357
  {
358
358
  className: i(n.dialog, d),
359
359
  onClose: e,
360
- ...x,
360
+ ...T,
361
361
  children: [
362
- /* @__PURE__ */ a(O, { className: i(n.topActions), children: /* @__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(O, { className: i(n.dialogText), children: u }),
410
- /* @__PURE__ */ a(O, { className: i(n.botActions), children: S ? /* @__PURE__ */ L(_, { children: [
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
- E,
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
- E,
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
- E,
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 I } from "../../constants.js";
2
- const N = 1, e = 670, E = ".jpg", _ = ".jpeg", P = ".png", o = ".svg", M = ".bmp", A = ".gif", T = ".ico", G = ".webp", D = [
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
- P,
4
+ I,
6
5
  o,
7
- M,
8
6
  A,
9
- G,
10
- T
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: [E, _],
23
- JPG_IMAGE_TYPE: [E, _],
24
- PNG_IMAGE_TYPE: [P],
25
- GIF_IMAGE_TYPE: [A],
26
- SVG_IMAGE_TYPE: [o],
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: [G],
28
+ WEBP_IMAGE_TYPE: [n],
29
29
  ICO_IMAGE_TYPE: [T],
30
30
  MICROSOFT_ICO_IMAGE_TYPE: [T]
31
- }, R = 500, B = 5 * I * I, a = "2d", V = "high", b = "%", J = "px", v = "ms", W = "mb", d = 1, f = 100, j = 2, r = 0.5, w = 100, x = 100, H = 500;
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
- f as FULL_CROP_SIZE,
40
- w as FULL_PROGRESS_VALUE,
41
- A as GIF_IMAGE_EXT,
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
- _ as JPEG_IMAGE_EXT,
46
+ I as JPEG_IMAGE_EXT,
46
47
  c as JPEG_IMAGE_TYPE,
47
- E as JPG_IMAGE_EXT,
48
- n as JPG_IMAGE_TYPE,
49
- j as MAX_ASPECT_RATIO,
50
- d as MB_FRACTION_DIGITS,
51
- W as MB_UNIT,
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
- r as MIN_ASPECT_RATIO,
55
+ w as MIN_ASPECT_RATIO,
55
56
  L as MP4_VIDEO_EXT,
56
- p as MP4_VIDEO_TYPE,
57
- v as MS_UNIT,
57
+ U as MP4_VIDEO_TYPE,
58
+ W as MS_UNIT,
58
59
  a as PHOTO_CANVAS_CONTEXT,
59
- x as PHOTO_LOADING_DELAY,
60
- V as PHOTO_SMOOTHING_QUALITY,
61
- J as PIXEL_UNIT,
62
- P as PNG_IMAGE_EXT,
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
- b as PRECENT_UNIT,
65
- H as RESET_DATA_DELAY,
65
+ J as PRECENT_UNIT,
66
+ Z as RESET_DATA_DELAY,
66
67
  D as SUPPORTED_IMAGE_EXTENSIONS,
67
- U as SUPPORTED_IMAGE_MIME_TYPES,
68
- o as SVG_IMAGE_EXT,
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
- C as WEBM_VIDEO_TYPE,
72
- G as WEBP_IMAGE_EXT,
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 photo",
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": "Photos were not uploaded",
27
- "some-not-uploaded": "Some photos were not uploaded"
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 Io, jsx as _ } from "react/jsx-runtime";
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 Fo } from "../../index-BiffjjQq.js";
4
- import { c as No } from "../../index-B2JRaoNz.js";
5
- import { localizedText as Mo } from "./locale.js";
6
- import { EN_LOCALE as bo } from "../../constants.js";
7
- import { DEFAULT_MIN_DIMENSION as Ho, DEFAULT_ASPECT_RATIO as Vo, DEFAULT_TIMEOUT as ko, DEFAULT_FILE_MAX_SIZE as jo, FULL_PROGRESS_VALUE as K, PHOTO_LOADING_DELAY as zo, RESET_DATA_DELAY as m } from "./constants.js";
8
- import { UploadDialog as Wo } from "./components/upload-dialog/upload-dialog.js";
9
- import { UploadButton as Bo } from "./components/upload-button/upload-button.js";
10
- import { ErrorUploadDialog as Go } from "./components/error-upload-dialog/error-upload-dialog.js";
11
- import { isVideo as Q } from "./utils/is-video.js";
12
- import { validatePhotoFile as $ } from "./utils/validate-photo-file.js";
13
- import { readPhoto as oo } from "./utils/read-photo.js";
14
- import { getPhotoCrop as Yo } from "./utils/get-photo-crop.js";
15
- import { getCroppedSource as Xo } from "./utils/get-cropped-source.js";
16
- import { getDefaultCroppedPhoto as eo } from "./utils/get-default-cropped-photo.js";
17
- import '../../assets/photo-crop-uploader.css';const Zo = "_photoCropCanvas_1i4lr_1", qo = {
18
- photoCropCanvas: Zo
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 me(a) {
21
+ function Ee(a) {
21
22
  const {
22
- buttonClassname: ro = "",
23
- onStartUpload: to = () => {
23
+ buttonClassname: so = "",
24
+ onStartUpload: no = () => {
24
25
  },
25
- onEndUpload: so = () => {
26
+ onEndUpload: ao = () => {
26
27
  },
27
- onError: no = () => {
28
+ onError: io = () => {
28
29
  },
29
- onStartCrop: ao = () => {
30
+ onStartCrop: lo = () => {
30
31
  },
31
- onDragOver: io = () => {
32
+ onDragOver: co = () => {
32
33
  },
33
- onDragLeave: co = () => {
34
+ onDragLeave: po = () => {
34
35
  },
35
- onDragDrop: lo = () => {
36
+ onDragDrop: uo = () => {
36
37
  },
37
- showErrorPopup: po = !1,
38
- minDimension: c = Ho,
39
- aspectRatio: C = Vo,
40
- locale: s = bo,
41
- timeout: N = ko,
42
- fileMaxSize: M = jo,
43
- allowedExtensions: U,
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: uo,
46
- width: fo,
47
- keepSelection: ho,
48
- uploadButton: mo,
47
+ circular: ho,
48
+ width: mo,
49
+ keepSelection: Co,
50
+ uploadButton: go,
49
51
  multiple: g = !1,
50
52
  fromSources: H,
51
- withVideoUploaded: A = !1,
52
- returnCropParams: Co = !1,
53
- dialogClassname: V,
54
- ...go
53
+ withVideoUploaded: v = !1,
54
+ returnCropParams: Eo = !1,
55
+ dialogClassname: k,
56
+ ...Po
55
57
  } = a, {
56
- onEndCrop: Jo,
57
- onClose: Ko,
58
- ...Eo
59
- } = go, [Po, E] = i(!1), [P, D] = i([]), [x, v] = i([]), f = w([]), h = w([]), [p, k] = i(0), j = w(null), z = w(null), [l, O] = i(!1), [Do, W] = i(0), [B, G] = i(""), [So, S] = i([]), [Lo, Y] = i(!1), To = Po || l && g, _o = () => {
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
- }, R = (o = []) => {
62
- l || (a.returnCropParams === !0 && a.onClose?.(
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([]), m), setTimeout(() => D([]), m), setTimeout(() => {
68
+ ), E(!1), setTimeout(() => S([]), d), setTimeout(() => D([]), d), setTimeout(() => {
67
69
  f.current = [], h.current = [];
68
- }, m));
69
- }, y = (o = []) => {
70
- l || (a.returnCropParams || a.onClose?.(
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([]), m), setTimeout(() => D([]), m), setTimeout(() => {
76
+ ), E(!1), setTimeout(() => S([]), d), setTimeout(() => D([]), d), setTimeout(() => {
75
77
  f.current = [], h.current = [];
76
- }, m));
77
- }, X = () => {
78
- l || (a.returnCropParams === !0 ? R([]) : y([]));
79
- }, wo = () => {
78
+ }, d));
79
+ }, Z = () => {
80
+ c || (a.returnCropParams === !0 ? F([]) : R([]));
81
+ }, Ao = () => {
80
82
  Y(!1);
81
- }, L = (o, r = o, e = []) => {
82
- so(o), G(""), D(o), v(Array(o.length)), k(0), E(!0), f.current = r, h.current = e, o.length || X();
83
- }, I = (o) => {
84
- o instanceof Error && (console.warn(o.message), no(o), G(o.message), Y(!0), D([]), E(!1), f.current = [], h.current = []);
85
- }, Uo = async (o) => {
86
- const { files: r } = o.target;
87
- if (r?.length && !l)
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), to(), g) {
90
- const e = Array.from(r), t = K / e.length, T = [], u = [], q = [], F = [];
91
- for (const d of e) {
92
- const Ro = Q(d);
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 (A && Ro) {
95
- const n = URL.createObjectURL(d);
96
- q.push(u.length), u.push(n);
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
- d,
101
+ eo(
102
+ m,
100
103
  {
101
- maxSize: M,
102
- allowedExtensions: U,
104
+ maxSize: N,
105
+ allowedExtensions: A,
103
106
  allowedMimeTypes: b
104
107
  },
105
108
  s
106
109
  );
107
- const n = await oo(
108
- d,
109
- c,
110
+ const n = await to(
111
+ m,
112
+ l,
110
113
  s,
111
- N
114
+ M
112
115
  );
113
- T.push(n), u.push(n);
116
+ _.push(n), u.push(n);
114
117
  }
115
118
  } catch (n) {
116
- let J = "";
117
- n instanceof Error && (J = n.message), F.push({
118
- photoName: d.name,
119
- errorMessage: J
119
+ let K = "";
120
+ n instanceof Error && (K = n.message), T.push({
121
+ photoName: m.name,
122
+ errorMessage: K
120
123
  });
121
124
  }
122
- W(
123
- (n) => Math.min(K, n + t)
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(F[0]?.errorMessage);
128
- S(F), L(T, u, q);
130
+ throw new Error(T[0]?.errorMessage);
131
+ S(T), L(_, u, J, T.length > 0);
129
132
  } else {
130
- const e = r[0];
131
- if (A && Q(e)) {
132
- const t = URL.createObjectURL(e);
133
- L([], [t], [0]);
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: M, allowedExtensions: U, allowedMimeTypes: b },
141
+ { maxSize: N, allowedExtensions: A, allowedMimeTypes: b },
138
142
  s
139
143
  );
140
- const t = await oo(e, c, s, N);
141
- L([t]);
144
+ const r = await to(e, l, s, M);
145
+ L([r]);
142
146
  }
143
147
  }
144
148
  } catch (e) {
145
- I(e);
149
+ y(e);
146
150
  } finally {
147
151
  g ? setTimeout(() => {
148
- o.target.value = "", W(0), O(!1);
149
- }, zo) : (o.target.value = "", O(!1));
152
+ o.target.value = "", B(0), O(!1);
153
+ }, Go) : (o.target.value = "", O(!1));
150
154
  }
151
- }, Ao = (o) => {
152
- const { width: r, height: e } = o.currentTarget, t = Yo(r, e, c, C);
153
- v((T) => {
154
- const u = [...T];
155
- return u[p] = t, u;
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
- }, xo = (o, r) => {
158
- v((e) => {
159
- const t = [...e];
160
- return t[p] = r, t;
161
+ }, Io = (o, t) => {
162
+ I((e) => {
163
+ const r = [...e];
164
+ return r[p] = t, r;
161
165
  });
162
- }, Z = () => {
163
- const o = z.current, r = j.current;
164
- if (o && r && x)
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 (ao(), a.returnCropParams === !0) {
169
- const t = Fo(e, r.naturalWidth, r.naturalHeight);
170
- a.onEndCrop?.(t), p >= P.length - 1 && R();
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 t = Xo(
173
- r,
180
+ const r = Jo(
181
+ t,
174
182
  o,
175
183
  e,
176
184
  s
177
185
  );
178
- a.onEndCrop?.(t), p >= P.length - 1 && y();
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), I(e)), !1;
190
+ return e instanceof Error && (console.warn(e), y(e)), !1;
183
191
  }
184
192
  else
185
193
  return !1;
186
- }, vo = () => {
187
- Z() && k((r) => r + 1);
188
- }, Oo = async () => {
194
+ }, Oo = () => {
195
+ q() && z((t) => t + 1);
196
+ }, Fo = async () => {
189
197
  const o = P.slice(p);
190
198
  try {
191
- if (Co) {
192
- const r = await Promise.all(
199
+ if (Eo) {
200
+ const t = await Promise.all(
193
201
  o.map(
194
- (e) => eo(
202
+ (e) => ro(
195
203
  e,
196
- c,
204
+ l,
197
205
  C,
198
206
  s,
199
207
  !0
200
208
  )
201
209
  )
202
210
  );
203
- R(r);
211
+ F(t);
204
212
  } else {
205
- const r = await Promise.all(
213
+ const t = await Promise.all(
206
214
  o.map(
207
- (e) => eo(
215
+ (e) => ro(
208
216
  e,
209
- c,
217
+ l,
210
218
  C,
211
219
  s,
212
220
  !1
213
221
  )
214
222
  )
215
223
  );
216
- y(r);
224
+ R(t);
217
225
  }
218
- } catch (r) {
219
- I(r);
226
+ } catch (t) {
227
+ y(t);
220
228
  }
221
229
  };
222
- return /* @__PURE__ */ yo(Io, { children: [
223
- /* @__PURE__ */ _(
224
- Bo,
230
+ return /* @__PURE__ */ yo(Mo, { children: [
231
+ /* @__PURE__ */ U(
232
+ Yo,
225
233
  {
226
- onChange: Uo,
234
+ onChange: vo,
227
235
  onPhotoDataLoaded: L,
228
- buttonClassname: ro,
229
- disabled: l,
230
- buttonDisabled: l,
236
+ buttonClassname: so,
237
+ disabled: c,
238
+ buttonDisabled: c,
231
239
  locale: s,
232
- width: fo,
233
- allowedExtensions: U,
234
- onDragDrop: lo,
235
- onDragLeave: co,
236
- onDragOver: io,
237
- button: mo,
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: A,
241
- ...Eo,
242
- children: Mo[s].upload
248
+ withVideoUploaded: v,
249
+ ...Do,
250
+ children: bo[s].upload
243
251
  }
244
252
  ),
245
- /* @__PURE__ */ _(
246
- Wo,
253
+ /* @__PURE__ */ U(
254
+ Xo,
247
255
  {
248
- open: To,
249
- className: V,
250
- photoSourceLoading: l,
251
- loadingValue: Do,
252
- errors: So,
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: vo,
256
- onSkipCrop: Oo,
257
- onClearErrors: _o,
258
- photoError: B,
259
- onCloseDialogHandler: X,
260
- onCropChange: xo,
261
- onPhotoCrop: Z,
262
- onPhotoLoad: Ao,
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: c,
272
+ minDimension: l,
265
273
  aspectRatio: C,
266
274
  locale: s,
267
- circular: uo,
268
- keepSelection: ho,
275
+ circular: ho,
276
+ keepSelection: Co,
269
277
  photoIndex: p
270
278
  }
271
279
  ),
272
- /* @__PURE__ */ _(
273
- Go,
280
+ /* @__PURE__ */ U(
281
+ Zo,
274
282
  {
275
- className: V,
276
- open: po && Lo,
277
- photoError: B,
278
- onCloseErrorDialog: wo,
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: No(qo.photoCropCanvas),
286
- width: c,
287
- height: c,
288
- ref: z
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
- me as PhotoCropUploader
302
+ Ee as PhotoCropUploader
295
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;
@@ -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 e } from "./read-photo.js";
1
+ import { readPhoto as r } from "./read-photo.js";
2
2
  import { getPhotoCrop as p } from "./get-photo-crop.js";
3
- import { getCroppedSource as m } from "./get-cropped-source.js";
4
- import { validatePhotoFile as x } from "./validate-photo-file.js";
5
- import { getDefaultCroppedPhoto as g } from "./get-default-cropped-photo.js";
6
- import { drawCroppedImage as i } from "./draw-cropped-image.js";
7
- import { isVideo as P } from "./is-video.js";
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
- i as drawCroppedImage,
10
- m as getCroppedSource,
11
- g as getDefaultCroppedPhoto,
10
+ g as drawCroppedImage,
11
+ f as getCroppedSource,
12
+ i as getDefaultCroppedPhoto,
12
13
  p as getPhotoCrop,
13
- P as isVideo,
14
- e as readPhoto,
15
- x as validatePhotoFile
14
+ C as isVideo,
15
+ r as readPhoto,
16
+ a as validatePhotoFile,
17
+ u as validateVideoFile
16
18
  };
@@ -0,0 +1,2 @@
1
+ import { Locale } from '../../../types';
2
+ export declare const validateVideoFile: (file: File, maxSize: number, locale?: Locale) => void;
@@ -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
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hai-dev/ui-kit",
3
3
  "private": false,
4
- "version": "1.1.5",
4
+ "version": "1.1.6",
5
5
  "license": "UNLICENSED",
6
6
  "author": {
7
7
  "name": "Vladislav Knitrunov",