@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.
@@ -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,292 +1,303 @@
1
- import { jsxs as Ro, Fragment as yo, 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 Io } from "../../index-BiffjjQq.js";
4
- import { c as Fo } from "../../index-B2JRaoNz.js";
5
- import { localizedText as Mo } from "./locale.js";
6
- import { EN_LOCALE as No } from "../../constants.js";
7
- import { DEFAULT_MIN_DIMENSION as bo, DEFAULT_ASPECT_RATIO as Ho, DEFAULT_TIMEOUT as Vo, DEFAULT_FILE_MAX_SIZE as ko, FULL_PROGRESS_VALUE as J, PHOTO_LOADING_DELAY as jo, RESET_DATA_DELAY as m } from "./constants.js";
8
- import { UploadDialog as zo } from "./components/upload-dialog/upload-dialog.js";
9
- import { UploadButton as Wo } from "./components/upload-button/upload-button.js";
10
- import { ErrorUploadDialog as Bo } from "./components/error-upload-dialog/error-upload-dialog.js";
11
- import { isVideo as K } from "./utils/is-video.js";
12
- import { validatePhotoFile as Q } from "./utils/validate-photo-file.js";
13
- import { readPhoto as $ } from "./utils/read-photo.js";
14
- import { getPhotoCrop as Go } from "./utils/get-photo-crop.js";
15
- import { getCroppedSource as Yo } from "./utils/get-cropped-source.js";
16
- import { getDefaultCroppedPhoto as oo } from "./utils/get-default-cropped-photo.js";
17
- import '../../assets/photo-crop-uploader.css';const Xo = "_photoCropCanvas_1i4lr_1", Zo = {
18
- photoCropCanvas: Xo
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 he(a) {
21
+ function Ee(a) {
21
22
  const {
22
- buttonClassname: eo = "",
23
- onStartUpload: ro = () => {
23
+ buttonClassname: so = "",
24
+ onStartUpload: no = () => {
24
25
  },
25
- onEndUpload: to = () => {
26
+ onEndUpload: ao = () => {
26
27
  },
27
- onError: no = () => {
28
+ onError: io = () => {
28
29
  },
29
- onStartCrop: so = () => {
30
+ onStartCrop: lo = () => {
30
31
  },
31
- onDragOver: ao = () => {
32
+ onDragOver: co = () => {
32
33
  },
33
- onDragLeave: io = () => {
34
+ onDragLeave: po = () => {
34
35
  },
35
- onDragDrop: co = () => {
36
+ onDragDrop: uo = () => {
36
37
  },
37
- showErrorPopup: lo = !1,
38
- minDimension: c = bo,
39
- aspectRatio: C = Ho,
40
- locale: n = No,
41
- timeout: M = Vo,
42
- fileMaxSize: N = ko,
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: po,
46
- width: uo,
47
- keepSelection: fo,
48
- uploadButton: ho,
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: mo = !1,
53
- ...Co
53
+ withVideoUploaded: v = !1,
54
+ returnCropParams: Eo = !1,
55
+ dialogClassname: k,
56
+ ...Po
54
57
  } = a, {
55
- onEndCrop: qo,
56
- onClose: Jo,
57
- ...go
58
- } = Co, [Eo, E] = i(!1), [P, D] = i([]), [x, v] = i([]), f = w([]), h = w([]), [p, V] = i(0), k = w(null), j = w(null), [l, O] = i(!1), [Po, z] = i(0), [W, B] = i(""), [Do, S] = i([]), [So, G] = i(!1), Lo = Eo || l && g, To = () => {
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
- }, R = (o = []) => {
61
- l || (a.returnCropParams === !0 && a.onClose?.(
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([]), m), setTimeout(() => D([]), m), setTimeout(() => {
68
+ ), E(!1), setTimeout(() => S([]), d), setTimeout(() => D([]), d), setTimeout(() => {
66
69
  f.current = [], h.current = [];
67
- }, m));
68
- }, y = (o = []) => {
69
- l || (a.returnCropParams || a.onClose?.(
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([]), m), setTimeout(() => D([]), m), setTimeout(() => {
76
+ ), E(!1), setTimeout(() => S([]), d), setTimeout(() => D([]), d), setTimeout(() => {
74
77
  f.current = [], h.current = [];
75
- }, m));
76
- }, Y = () => {
77
- l || (a.returnCropParams === !0 ? R([]) : y([]));
78
- }, _o = () => {
79
- G(!1);
80
- }, L = (o, r = o, e = []) => {
81
- to(o), B(""), D(o), v(Array(o.length)), V(0), E(!0), f.current = r, h.current = e, o.length || Y();
82
- }, I = (o) => {
83
- o instanceof Error && (console.warn(o.message), no(o), B(o.message), G(!0), D([]), E(!1), f.current = [], h.current = []);
84
- }, wo = async (o) => {
85
- const { files: r } = o.target;
86
- if (r?.length && !l)
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), ro(), g) {
89
- const e = Array.from(r), t = J / e.length, T = [], u = [], Z = [], F = [];
90
- for (const d of e) {
91
- const Oo = K(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);
92
95
  try {
93
- if (A && Oo) {
94
- const s = URL.createObjectURL(d);
95
- Z.push(u.length), u.push(s);
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
- Q(
98
- d,
101
+ eo(
102
+ m,
99
103
  {
100
104
  maxSize: N,
101
- allowedExtensions: U,
105
+ allowedExtensions: A,
102
106
  allowedMimeTypes: b
103
107
  },
104
- n
108
+ s
105
109
  );
106
- const s = await $(
107
- d,
108
- c,
109
- n,
110
+ const n = await to(
111
+ m,
112
+ l,
113
+ s,
110
114
  M
111
115
  );
112
- T.push(s), u.push(s);
116
+ _.push(n), u.push(n);
113
117
  }
114
- } catch (s) {
115
- let q = "";
116
- s instanceof Error && (q = s.message), F.push({
117
- photoName: d.name,
118
- errorMessage: q
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
- z(
122
- (s) => Math.min(J, s + t)
123
- ), await new Promise((s) => setTimeout(s, 0));
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(F[0]?.errorMessage);
127
- S(F), L(T, u, Z);
130
+ throw new Error(T[0]?.errorMessage);
131
+ S(T), L(_, u, J, T.length > 0);
128
132
  } else {
129
- const e = r[0];
130
- if (A && K(e)) {
131
- const t = URL.createObjectURL(e);
132
- 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]);
133
138
  } else {
134
- Q(
139
+ eo(
135
140
  e,
136
- { maxSize: N, allowedExtensions: U, allowedMimeTypes: b },
137
- n
141
+ { maxSize: N, allowedExtensions: A, allowedMimeTypes: b },
142
+ s
138
143
  );
139
- const t = await $(e, c, n, M);
140
- L([t]);
144
+ const r = await to(e, l, s, M);
145
+ L([r]);
141
146
  }
142
147
  }
143
148
  } catch (e) {
144
- I(e);
149
+ y(e);
145
150
  } finally {
146
151
  g ? setTimeout(() => {
147
- o.target.value = "", z(0), O(!1);
148
- }, jo) : (o.target.value = "", O(!1));
152
+ o.target.value = "", B(0), O(!1);
153
+ }, Go) : (o.target.value = "", O(!1));
149
154
  }
150
- }, Uo = (o) => {
151
- const { width: r, height: e } = o.currentTarget, t = Go(r, e, c, C);
152
- v((T) => {
153
- const u = [...T];
154
- 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;
155
160
  });
156
- }, Ao = (o, r) => {
157
- v((e) => {
158
- const t = [...e];
159
- return t[p] = r, t;
161
+ }, Io = (o, t) => {
162
+ I((e) => {
163
+ const r = [...e];
164
+ return r[p] = t, r;
160
165
  });
161
- }, X = () => {
162
- const o = j.current, r = k.current;
163
- if (o && r && x)
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 (so(), a.returnCropParams === !0) {
168
- const t = Io(e, r.naturalWidth, r.naturalHeight);
169
- 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();
170
179
  } else {
171
- const t = Yo(
172
- r,
180
+ const r = Jo(
181
+ t,
173
182
  o,
174
183
  e,
175
- n
184
+ s
176
185
  );
177
- a.onEndCrop?.(t), p >= P.length - 1 && y();
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), I(e)), !1;
190
+ return e instanceof Error && (console.warn(e), y(e)), !1;
182
191
  }
183
192
  else
184
193
  return !1;
185
- }, xo = () => {
186
- X() && V((r) => r + 1);
187
- }, vo = async () => {
194
+ }, Oo = () => {
195
+ q() && z((t) => t + 1);
196
+ }, Fo = async () => {
188
197
  const o = P.slice(p);
189
198
  try {
190
- if (mo) {
191
- const r = await Promise.all(
199
+ if (Eo) {
200
+ const t = await Promise.all(
192
201
  o.map(
193
- (e) => oo(
202
+ (e) => ro(
194
203
  e,
195
- c,
204
+ l,
196
205
  C,
197
- n,
206
+ s,
198
207
  !0
199
208
  )
200
209
  )
201
210
  );
202
- R(r);
211
+ F(t);
203
212
  } else {
204
- const r = await Promise.all(
213
+ const t = await Promise.all(
205
214
  o.map(
206
- (e) => oo(
215
+ (e) => ro(
207
216
  e,
208
- c,
217
+ l,
209
218
  C,
210
- n,
219
+ s,
211
220
  !1
212
221
  )
213
222
  )
214
223
  );
215
- y(r);
224
+ R(t);
216
225
  }
217
- } catch (r) {
218
- I(r);
226
+ } catch (t) {
227
+ y(t);
219
228
  }
220
229
  };
221
- return /* @__PURE__ */ Ro(yo, { children: [
222
- /* @__PURE__ */ _(
223
- Wo,
230
+ return /* @__PURE__ */ yo(Mo, { children: [
231
+ /* @__PURE__ */ U(
232
+ Yo,
224
233
  {
225
- onChange: wo,
234
+ onChange: vo,
226
235
  onPhotoDataLoaded: L,
227
- buttonClassname: eo,
228
- disabled: l,
229
- buttonDisabled: l,
230
- locale: n,
231
- width: uo,
232
- allowedExtensions: U,
233
- onDragDrop: co,
234
- onDragLeave: io,
235
- onDragOver: ao,
236
- button: ho,
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: A,
240
- ...go,
241
- children: Mo[n].upload
248
+ withVideoUploaded: v,
249
+ ...Do,
250
+ children: bo[s].upload
242
251
  }
243
252
  ),
244
- /* @__PURE__ */ _(
245
- zo,
253
+ /* @__PURE__ */ U(
254
+ Xo,
246
255
  {
247
- open: Lo,
248
- photoSourceLoading: l,
249
- loadingValue: Po,
250
- errors: Do,
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: xo,
254
- onSkipCrop: vo,
255
- onClearErrors: To,
256
- photoError: W,
257
- onCloseDialogHandler: Y,
258
- onCropChange: Ao,
259
- onPhotoCrop: X,
260
- onPhotoLoad: Uo,
261
- imageRef: k,
262
- minDimension: c,
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: n,
265
- circular: po,
266
- keepSelection: fo,
274
+ locale: s,
275
+ circular: ho,
276
+ keepSelection: Co,
267
277
  photoIndex: p
268
278
  }
269
279
  ),
270
- /* @__PURE__ */ _(
271
- Bo,
280
+ /* @__PURE__ */ U(
281
+ Zo,
272
282
  {
273
- open: lo && So,
274
- photoError: W,
275
- onCloseErrorDialog: _o,
276
- locale: n
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: Fo(Zo.photoCropCanvas),
283
- width: c,
284
- height: c,
285
- ref: j
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
- he as PhotoCropUploader
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 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.4",
4
+ "version": "1.1.6",
5
5
  "license": "UNLICENSED",
6
6
  "author": {
7
7
  "name": "Vladislav Knitrunov",