@oneplatformdev/ui 0.1.99-beta.283 → 0.1.99-beta.284

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 +1 @@
1
- {"version":3,"file":"Dropzone.d.ts","sourceRoot":"","sources":["../../src/Dropzone/Dropzone.tsx"],"names":[],"mappings":"AAQA,OAAO,EAEL,eAAe,EACf,aAAa,EAEd,MAAM,kBAAkB,CAAC;AA8F1B;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,QAAQ,2GAkhBpB,CAAC"}
1
+ {"version":3,"file":"Dropzone.d.ts","sourceRoot":"","sources":["../../src/Dropzone/Dropzone.tsx"],"names":[],"mappings":"AAQA,OAAO,EAEL,eAAe,EACf,aAAa,EAEd,MAAM,kBAAkB,CAAC;AA8F1B;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,QAAQ,2GAqhBpB,CAAC"}
@@ -1,28 +1,28 @@
1
1
  import { jsxs as r, jsx as e, Fragment as U } from "react/jsx-runtime";
2
- import { X as B, Plus as Be, UploadIcon as Se, FileTextIcon as V, InfoIcon as ee } from "lucide-react";
3
- import { forwardRef as Me, useState as te, useEffect as ke, useImperativeHandle as Re } from "react";
4
- import { useDropzone as We } from "react-dropzone";
2
+ import { X as M, Plus as Se, UploadIcon as Me, FileTextIcon as V, InfoIcon as ee } from "lucide-react";
3
+ import { forwardRef as ke, useState as te, useEffect as Re, useImperativeHandle as We } from "react";
4
+ import { useDropzone as Ae } from "react-dropzone";
5
5
  import { cn as x } from "@oneplatformdev/utils";
6
- import { Card as Ae } from "../Card/Card.js";
7
- import { DEFAULT_FILE_TYPES as _e } from "./Dropzone.types.js";
6
+ import { Card as _e } from "../Card/Card.js";
7
+ import { DEFAULT_FILE_TYPES as $e } from "./Dropzone.types.js";
8
8
  import { FilePreview as re } from "./DropzoneFilePreview.js";
9
- import { DropzoneSinglePickPreview as $e } from "./DropzoneSinglePickPreview.js";
10
- import { isFile as z, isVideoUrl as Xe, extractName as Ge } from "./DropzoneUtils.js";
11
- import Ke from "./icons/file-csv.svg.js";
12
- import Le from "./icons/file-doc.svg.js";
13
- import Oe from "./icons/file-docx.svg.js";
9
+ import { DropzoneSinglePickPreview as Xe } from "./DropzoneSinglePickPreview.js";
10
+ import { isFile as z, isVideoUrl as Ge, extractName as Ke } from "./DropzoneUtils.js";
11
+ import Le from "./icons/file-csv.svg.js";
12
+ import Oe from "./icons/file-doc.svg.js";
13
+ import Pe from "./icons/file-docx.svg.js";
14
14
  import le from "./icons/file-jpg.svg.js";
15
15
  import Te from "./icons/file-pdf.svg.js";
16
16
  import qe from "./icons/file-png.svg.js";
17
17
  import He from "./icons/file-ppt.svg.js";
18
18
  import Je from "./icons/file-pptx.svg.js";
19
- import Pe from "./icons/file-rar.svg.js";
20
- import Ye from "./icons/file-svg.svg.js";
21
- import Ze from "./icons/file-webp.svg.js";
22
- import Qe from "./icons/file-xls.svg.js";
23
- import Ue from "./icons/file-xlsx.svg.js";
24
- import Ve from "./icons/file-zip.svg.js";
25
- import { Button as et } from "../Button/Button.js";
19
+ import Ye from "./icons/file-rar.svg.js";
20
+ import Ze from "./icons/file-svg.svg.js";
21
+ import Qe from "./icons/file-webp.svg.js";
22
+ import Ue from "./icons/file-xls.svg.js";
23
+ import Ve from "./icons/file-xlsx.svg.js";
24
+ import et from "./icons/file-zip.svg.js";
25
+ import { Button as tt } from "../Button/Button.js";
26
26
  const b = (l = 0) => {
27
27
  if (!l || l < 0) return "0 KB";
28
28
  const s = 1024, m = s * 1024, a = m * 1024;
@@ -32,30 +32,30 @@ const b = (l = 0) => {
32
32
  return `${c >= 100 ? c.toFixed(0) : c.toFixed(2)} MB`;
33
33
  }
34
34
  return l >= s ? `${(l / s).toFixed(l / s >= 100 ? 0 : 1)} KB` : `${l} B`;
35
- }, tt = {
36
- csv: Ke,
37
- doc: Le,
38
- docx: Oe,
35
+ }, rt = {
36
+ csv: Le,
37
+ doc: Oe,
38
+ docx: Pe,
39
39
  jpg: le,
40
40
  jpeg: le,
41
41
  pdf: Te,
42
42
  png: qe,
43
43
  ppt: He,
44
44
  pptx: Je,
45
- rar: Pe,
46
- svg: Ye,
47
- webp: Ze,
48
- xls: Qe,
49
- xlsx: Ue,
50
- zip: Ve
51
- }, rt = (l) => {
45
+ rar: Ye,
46
+ svg: Ze,
47
+ webp: Qe,
48
+ xls: Ue,
49
+ xlsx: Ve,
50
+ zip: et
51
+ }, lt = (l) => {
52
52
  if (!l) return "";
53
53
  const s = l.toLowerCase().split(".");
54
54
  return s.length > 1 ? s[s.length - 1] : "";
55
- }, lt = (l) => {
56
- const s = rt(l);
57
- return tt[s] ?? null;
58
- }, it = (l, s) => {
55
+ }, it = (l) => {
56
+ const s = lt(l);
57
+ return rt[s] ?? null;
58
+ }, nt = (l, s) => {
59
59
  if (l === s) return !0;
60
60
  if (l.length !== s.length) return !1;
61
61
  for (let m = 0; m < l.length; m++) {
@@ -74,9 +74,9 @@ const b = (l = 0) => {
74
74
  }
75
75
  }
76
76
  return !0;
77
- }, nt = Me(
77
+ }, ot = ke(
78
78
  ({
79
- acceptTypes: l = _e,
79
+ acceptTypes: l = $e,
80
80
  maxSizeMB: s,
81
81
  maxFiles: m = 1,
82
82
  onErrors: a,
@@ -84,14 +84,14 @@ const b = (l = 0) => {
84
84
  disabled: f = !1,
85
85
  classNames: u,
86
86
  value: v,
87
- onChangeValue: G,
87
+ onChangeValue: K,
88
88
  className: ie,
89
- labelDropzonePrompt: S = "Drop files here or click to select",
89
+ labelDropzonePrompt: k = "Drop files here or click to select",
90
90
  labelDropzoneSubPrompt: ne = "",
91
91
  labelOrClickToSelect: oe = "Upload file",
92
92
  labelSelectedFiles: se = "Selected Files",
93
93
  labelUploadErrors: ce = "Upload Errors",
94
- labelFileTooLarge: M = "File is too large",
94
+ labelFileTooLarge: R = "File is too large",
95
95
  labelInvalidFileType: I = "Invalid file type",
96
96
  labelVideoUploaded: ae = "Uploaded",
97
97
  labelVideoReplace: de = "Replace",
@@ -99,46 +99,46 @@ const b = (l = 0) => {
99
99
  labelDropzoneClassname: me,
100
100
  labelDropzoneSubClassname: fe,
101
101
  isUploading: p = !1,
102
- uploadProgress: K = 0,
102
+ uploadProgress: L = 0,
103
103
  uploadLoadedBytes: pe = 0,
104
104
  uploadTotalBytes: xe = 0,
105
- onCancelUpload: L,
105
+ onCancelUpload: O,
106
106
  labelUploadingTitle: he = "Uploading video...",
107
107
  labelUploadingHint: ue = "Please do not close this page",
108
108
  labelUploadingActionCancel: ge = "Cancel",
109
109
  labelUploadingOf: we = "of",
110
110
  playerTranslations: Ne,
111
- singlePickFileInfo: k,
112
- persistentDropzone: O = !1,
111
+ singlePickFileInfo: W,
112
+ persistentDropzone: P = !1,
113
113
  previewVariant: g = "default",
114
114
  coverFirstItem: Fe = !1,
115
- ...R
115
+ ...A
116
116
  }, ve) => {
117
- const [i, y] = te(v ?? []), [h, T] = te([]), w = i[0], W = h[0]?.file, Ce = !!W?.type?.includes("image"), A = n && i.length > 0 && z(w), be = A && w.type.includes("image"), q = A && w.type.includes("video") || n && i.length > 0 && typeof w == "string" && Xe(w), H = A && !be && !q, J = n && !i.length && !!W && !Ce, N = H ? w : W, D = lt(N?.name), _ = n && q, ze = _, $ = n && i.length > 0, Ie = (t, d) => {
117
+ const [i, y] = te(v ?? []), [h, T] = te([]), w = i[0], _ = h[0]?.file, Ce = !!_?.type?.includes("image"), $ = n && i.length > 0 && z(w), be = $ && w.type.includes("image"), q = $ && w.type.includes("video") || n && i.length > 0 && typeof w == "string" && Ge(w), X = $ && !be && !q, H = n && !i.length && !!_ && !Ce, N = X ? w : _, D = it(N?.name), E = n && q, ze = E, j = n && i.length > 0, Ie = j && !X && !E, ye = (t, d) => {
118
118
  T(d), a?.(d);
119
119
  const o = n ? t.slice(0, 1) : [...i, ...t].slice(0, m);
120
- y(o), G?.(o);
120
+ y(o), K?.(o);
121
121
  };
122
- ke(() => {
123
- v && !it(i, v) && y(v);
122
+ Re(() => {
123
+ v && !nt(i, v) && y(v);
124
124
  }, [i, v]);
125
- const E = (t, d) => {
125
+ const B = (t, d) => {
126
126
  if (f) return;
127
127
  t.stopPropagation();
128
- const o = i.filter((F, j) => j !== d);
129
- y(o), G?.(o);
130
- }, { getRootProps: ye, getInputProps: De, isDragActive: Ee, open: X } = We({
131
- onDrop: Ie,
128
+ const o = i.filter((F, S) => S !== d);
129
+ y(o), K?.(o);
130
+ }, { getRootProps: De, getInputProps: Ee, isDragActive: je, open: G } = Ae({
131
+ onDrop: ye,
132
132
  accept: l.reduce((t, d) => (t[d] = [], t), {}),
133
133
  maxSize: s * 1024 * 1024,
134
134
  maxFiles: n ? 1 : m,
135
135
  disabled: f || p,
136
136
  noClick: !0
137
137
  });
138
- Re(ve, () => ({
138
+ We(ve, () => ({
139
139
  setItems: y
140
140
  }), []);
141
- const C = Fe && g === "image-grid" && !n && i.length > 0, P = !p && !n && O && i.length > 0, Y = C ? i.slice(1) : i, Z = !f && !n && g === "image-grid" && i.length > 0 && i.length < m, Q = !p && !n && (Y.length > 0 || Z) && /* @__PURE__ */ r("div", { className: x("w-full mt-2", u?.previewWrapper), children: [
141
+ const C = Fe && g === "image-grid" && !n && i.length > 0, J = !p && !n && P && i.length > 0, Y = C ? i.slice(1) : i, Z = !f && !n && g === "image-grid" && i.length > 0 && i.length < m, Q = !p && !n && (Y.length > 0 || Z) && /* @__PURE__ */ r("div", { className: x("w-full mt-2", u?.previewWrapper), children: [
142
142
  g === "default" && /* @__PURE__ */ r("pre", { className: "font-semibold text-gray-600", children: [
143
143
  se,
144
144
  ":"
@@ -152,7 +152,7 @@ const b = (l = 0) => {
152
152
  ),
153
153
  children: [
154
154
  Y.map((t, d) => {
155
- const o = C ? d + 1 : d, F = z(t) ? t.name : Ge(t), j = z(t) ? b(t.size) : "";
155
+ const o = C ? d + 1 : d, F = z(t) ? t.name : Ke(t), S = z(t) ? b(t.size) : "";
156
156
  return /* @__PURE__ */ r(
157
157
  "li",
158
158
  {
@@ -170,16 +170,16 @@ const b = (l = 0) => {
170
170
  "absolute top-0 right-0 cursor-pointer bg-gray-300 rounded-sm",
171
171
  g === "image-grid" && "top-1 right-1 bg-white/90 rounded-full p-0.5"
172
172
  ),
173
- onClick: (je) => E(je, o),
174
- children: /* @__PURE__ */ e(B, { size: 16, strokeWidth: 1, color: "black" })
173
+ onClick: (Be) => B(Be, o),
174
+ children: /* @__PURE__ */ e(M, { size: 16, strokeWidth: 1, color: "black" })
175
175
  }
176
176
  )
177
177
  ] }),
178
178
  g === "default" && /* @__PURE__ */ r("span", { className: "inline-flex flex-col items-center", children: [
179
179
  /* @__PURE__ */ e("span", { className: "max-w-[80px] text-ellipsis overflow-hidden whitespace-nowrap", children: F }),
180
- j && /* @__PURE__ */ r("span", { children: [
180
+ S && /* @__PURE__ */ r("span", { children: [
181
181
  "(",
182
- j,
182
+ S,
183
183
  ")"
184
184
  ] })
185
185
  ] })
@@ -193,9 +193,9 @@ const b = (l = 0) => {
193
193
  {
194
194
  className: "relative w-[75px] h-[75px] flex items-center justify-center rounded-[8px] border border-dashed border-[#9368FF80] bg-[#FCFCFC] cursor-pointer hover:bg-[#9368FF0F]",
195
195
  onClick: (t) => {
196
- t.stopPropagation(), !(f || p) && X();
196
+ t.stopPropagation(), !(f || p) && G();
197
197
  },
198
- children: /* @__PURE__ */ e("div", { className: "flex size-6 items-center justify-center rounded-full bg-[#9368FF1F]", children: /* @__PURE__ */ e(Be, { size: 16, className: "text-[#9368FF]" }) })
198
+ children: /* @__PURE__ */ e("div", { className: "flex size-6 items-center justify-center rounded-full bg-[#9368FF1F]", children: /* @__PURE__ */ e(Se, { size: 16, className: "text-[#9368FF]" }) })
199
199
  },
200
200
  "add-more"
201
201
  )
@@ -205,35 +205,36 @@ const b = (l = 0) => {
205
205
  ] });
206
206
  return /* @__PURE__ */ r("div", { className: "w-full select-none", children: [
207
207
  /* @__PURE__ */ r(
208
- Ae,
208
+ _e,
209
209
  {
210
- ...R,
211
- ...ye({
210
+ ...A,
211
+ ...De({
212
212
  onClick: (t) => {
213
213
  if (!(f || p)) {
214
214
  if (ze) {
215
- R.onClick?.(t);
215
+ A.onClick?.(t);
216
216
  return;
217
217
  }
218
- X(), R.onClick?.(t);
218
+ G(), A.onClick?.(t);
219
219
  }
220
220
  }
221
221
  }),
222
222
  className: x(
223
223
  "w-full text-center flex flex-col items-center justify-center gap-6 cursor-pointer",
224
- !$ && "border border-dashed border-[#9368FF80] rounded-[8px] bg-[#FCFCFC] p-4",
225
- $ && "min-h-0 border-0 bg-transparent p-0",
224
+ !j && "border border-dashed border-[#9368FF80] rounded-[8px] bg-[#FCFCFC] p-4",
225
+ j && "min-h-0 border-0 bg-transparent p-0",
226
226
  C && "relative",
227
227
  f && "border-[#E4E4E7] pointer-events-none",
228
- h.length > 0 && !$ && "border-red-500",
229
- Ee && "bg-gray-100",
228
+ h.length > 0 && !j && "border-red-500",
229
+ je && "bg-gray-100",
230
230
  n && "shadow-none!",
231
- n && i.length > 0 && !_ && "p-0! shadow-none!",
232
- _ && "h-auto! max-h-none! min-h-0! p-2!",
231
+ n && i.length > 0 && !E && "p-0! shadow-none!",
232
+ E && "h-auto! max-h-none! min-h-0! p-2!",
233
+ Ie && "h-64",
233
234
  ie
234
235
  ),
235
236
  children: [
236
- /* @__PURE__ */ e("input", { ...De() }),
237
+ /* @__PURE__ */ e("input", { ...Ee() }),
237
238
  p && /* @__PURE__ */ r(
238
239
  "div",
239
240
  {
@@ -243,7 +244,7 @@ const b = (l = 0) => {
243
244
  /* @__PURE__ */ r("div", { className: "relative h-24 w-24", children: [
244
245
  /* @__PURE__ */ e("svg", { className: "h-24 w-24", viewBox: "0 0 100 100", children: /* @__PURE__ */ e("circle", { cx: "50", cy: "50", r: "42", stroke: "#E6E1F5", strokeWidth: "8", fill: "none" }) }),
245
246
  /* @__PURE__ */ r("span", { className: "absolute inset-0 flex items-center justify-center text-lg font-semibold text-foreground", children: [
246
- Math.max(0, Math.min(100, Math.round(K))),
247
+ Math.max(0, Math.min(100, Math.round(L))),
247
248
  "%"
248
249
  ] })
249
250
  ] }),
@@ -262,16 +263,16 @@ const b = (l = 0) => {
262
263
  "div",
263
264
  {
264
265
  className: "h-full bg-[#9368FF] transition-[width] duration-150 ease-linear",
265
- style: { width: `${Math.max(0, Math.min(100, K))}%` }
266
+ style: { width: `${Math.max(0, Math.min(100, L))}%` }
266
267
  }
267
268
  ) }),
268
- L && /* @__PURE__ */ e(
269
+ O && /* @__PURE__ */ e(
269
270
  "button",
270
271
  {
271
272
  type: "button",
272
273
  className: "mt-1 h-10 min-w-36 rounded-md border border-[#E4E4E7] bg-white px-6 text-base font-medium text-foreground cursor-pointer",
273
274
  onClick: (t) => {
274
- t.stopPropagation(), L();
275
+ t.stopPropagation(), O();
275
276
  },
276
277
  children: ge
277
278
  }
@@ -302,14 +303,14 @@ const b = (l = 0) => {
302
303
  "div",
303
304
  {
304
305
  className: "absolute top-2 right-2 cursor-pointer bg-white/90 rounded-full p-1",
305
- onClick: (t) => E(t, 0),
306
- children: /* @__PURE__ */ e(B, { size: 16, strokeWidth: 1, color: "black" })
306
+ onClick: (t) => B(t, 0),
307
+ children: /* @__PURE__ */ e(M, { size: 16, strokeWidth: 1, color: "black" })
307
308
  }
308
309
  )
309
310
  ]
310
311
  }
311
312
  ),
312
- !p && (i.length === 0 || !n && O) && (h.length === 0 || !n) && /* @__PURE__ */ r(
313
+ !p && (i.length === 0 || !n && P) && (h.length === 0 || !n) && /* @__PURE__ */ r(
313
314
  "div",
314
315
  {
315
316
  className: x(
@@ -318,7 +319,7 @@ const b = (l = 0) => {
318
319
  C && "invisible"
319
320
  ),
320
321
  children: [
321
- /* @__PURE__ */ e("div", { className: "flex size-12 items-center justify-center rounded-full bg-[#9368FF1F]", children: /* @__PURE__ */ e(Se, { className: "size-6 text-[#9368FF]" }) }),
322
+ /* @__PURE__ */ e("div", { className: "flex size-12 items-center justify-center rounded-full bg-[#9368FF1F]", children: /* @__PURE__ */ e(Me, { className: "size-6 text-[#9368FF]" }) }),
322
323
  /* @__PURE__ */ e("div", { className: "flex flex-col items-center gap-1 w-full", children: !f && /* @__PURE__ */ r(U, { children: [
323
324
  /* @__PURE__ */ e(
324
325
  "span",
@@ -327,7 +328,7 @@ const b = (l = 0) => {
327
328
  "font-semibold text-[14px] leading-[125%] text-[#06080D] text-center w-full whitespace-pre-line",
328
329
  me
329
330
  ),
330
- children: S
331
+ children: k
331
332
  }
332
333
  ),
333
334
  /* @__PURE__ */ e(
@@ -342,7 +343,7 @@ const b = (l = 0) => {
342
343
  )
343
344
  ] }) }),
344
345
  !f && /* @__PURE__ */ e(
345
- et,
346
+ tt,
346
347
  {
347
348
  type: "button",
348
349
  size: "md",
@@ -352,7 +353,7 @@ const b = (l = 0) => {
352
353
  ]
353
354
  }
354
355
  ),
355
- !p && n && h.length > 0 && !J && /* @__PURE__ */ r("div", { className: x("w-full mt-4", u?.errorWrapper), children: [
356
+ !p && n && h.length > 0 && !H && /* @__PURE__ */ r("div", { className: x("w-full mt-4", u?.errorWrapper), children: [
356
357
  /* @__PURE__ */ r("span", { className: "font-semibold text-red-500", children: [
357
358
  ce,
358
359
  ":"
@@ -363,19 +364,19 @@ const b = (l = 0) => {
363
364
  b(t.file.size),
364
365
  ")",
365
366
  !c && /* @__PURE__ */ e("ul", { className: "ml-4 list-disc list-inside", children: t.errors.map((o, F) => /* @__PURE__ */ r("li", { children: [
366
- o.code === "file-too-large" && M,
367
+ o.code === "file-too-large" && R,
367
368
  o.code === "file-invalid-type" && I,
368
369
  o.code !== "file-too-large" && o.code !== "file-invalid-type" && o.message
369
370
  ] }, F)) })
370
371
  ] }, d)) })
371
372
  ] }),
372
- !p && !!(n && i.length) && /* @__PURE__ */ e(U, { children: H ? /* @__PURE__ */ r(
373
+ !p && !!(n && i.length) && /* @__PURE__ */ e(U, { children: X ? /* @__PURE__ */ r(
373
374
  "div",
374
375
  {
375
376
  className: "w-full max-w-[502px] flex flex-col items-center gap-4",
376
377
  onClick: (t) => t.stopPropagation(),
377
378
  children: [
378
- /* @__PURE__ */ e("p", { className: "w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]", children: S }),
379
+ /* @__PURE__ */ e("p", { className: "w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]", children: k }),
379
380
  /* @__PURE__ */ r("div", { className: "w-full min-h-[72px] rounded-[8px] bg-[#F5F5F5] p-4 flex items-center gap-4", children: [
380
381
  D ? /* @__PURE__ */ e(
381
382
  "img",
@@ -386,42 +387,42 @@ const b = (l = 0) => {
386
387
  }
387
388
  ) : /* @__PURE__ */ e("div", { className: "size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0", children: /* @__PURE__ */ e(V, { size: 20 }) }),
388
389
  /* @__PURE__ */ r("div", { className: "flex flex-col items-start text-left gap-1 min-w-0 flex-1", children: [
389
- /* @__PURE__ */ e("span", { className: "w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate", children: k?.name || N?.name }),
390
- /* @__PURE__ */ e("span", { className: "w-full text-[12px] font-medium leading-[120%] text-[#666A78]", children: b(k?.size || N?.size) })
390
+ /* @__PURE__ */ e("span", { className: "w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate", children: W?.name || N?.name }),
391
+ /* @__PURE__ */ e("span", { className: "w-full text-[12px] font-medium leading-[120%] text-[#666A78]", children: b(W?.size || N?.size) })
391
392
  ] }),
392
393
  !f && /* @__PURE__ */ e(
393
394
  "div",
394
395
  {
395
396
  className: "size-6 flex items-center justify-center cursor-pointer",
396
- onClick: (t) => E(t, 0),
397
- children: /* @__PURE__ */ e(B, { size: 24, color: "#06080D" })
397
+ onClick: (t) => B(t, 0),
398
+ children: /* @__PURE__ */ e(M, { size: 24, color: "#06080D" })
398
399
  }
399
400
  )
400
401
  ] })
401
402
  ]
402
403
  }
403
404
  ) : /* @__PURE__ */ e(
404
- $e,
405
+ Xe,
405
406
  {
406
407
  item: i[0],
407
- onRemoveClick: (t) => E(t, 0),
408
+ onRemoveClick: (t) => B(t, 0),
408
409
  onReplaceClick: (t) => {
409
- t.stopPropagation(), !f && X();
410
+ t.stopPropagation(), !f && G();
410
411
  },
411
412
  labelUploaded: ae,
412
413
  labelReplace: de,
413
- fileInfo: k,
414
+ fileInfo: W,
414
415
  disabled: f,
415
416
  playerTranslations: Ne
416
417
  }
417
418
  ) }),
418
- !p && J && /* @__PURE__ */ r(
419
+ !p && H && /* @__PURE__ */ r(
419
420
  "div",
420
421
  {
421
422
  className: "w-full max-w-[502px] flex flex-col items-center gap-4",
422
423
  onClick: (t) => t.stopPropagation(),
423
424
  children: [
424
- /* @__PURE__ */ e("p", { className: "w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]", children: S }),
425
+ /* @__PURE__ */ e("p", { className: "w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]", children: k }),
425
426
  /* @__PURE__ */ r("div", { className: "w-full min-h-[72px] rounded-[8px] bg-[#F5F5F5] p-4 flex items-center gap-4", children: [
426
427
  D ? /* @__PURE__ */ e(
427
428
  "img",
@@ -442,28 +443,28 @@ const b = (l = 0) => {
442
443
  onClick: (t) => {
443
444
  t.stopPropagation(), T([]);
444
445
  },
445
- children: /* @__PURE__ */ e(B, { size: 24, color: "#06080D" })
446
+ children: /* @__PURE__ */ e(M, { size: 24, color: "#06080D" })
446
447
  }
447
448
  )
448
449
  ] }),
449
450
  /* @__PURE__ */ r("div", { className: "w-full bg-[#DC26260F] p-4 flex items-start gap-4", children: [
450
451
  /* @__PURE__ */ e(ee, { size: 20, color: "#DC2626" }),
451
- /* @__PURE__ */ e("p", { className: "text-[12px] leading-[120%] font-medium text-[#DC2626] text-left", children: h[0]?.errors?.[0]?.code === "file-too-large" ? M : h[0]?.errors?.[0]?.message || I })
452
+ /* @__PURE__ */ e("p", { className: "text-[12px] leading-[120%] font-medium text-[#DC2626] text-left", children: h[0]?.errors?.[0]?.code === "file-too-large" ? R : h[0]?.errors?.[0]?.message || I })
452
453
  ] })
453
454
  ]
454
455
  }
455
456
  ),
456
- !P && Q
457
+ !J && Q
457
458
  ]
458
459
  }
459
460
  ),
460
- P && /* @__PURE__ */ e("div", { className: "w-full", children: Q }),
461
+ J && /* @__PURE__ */ e("div", { className: "w-full", children: Q }),
461
462
  !p && !n && h.length > 0 && /* @__PURE__ */ e(
462
463
  "div",
463
464
  {
464
465
  className: x("w-full mt-4 flex flex-col gap-2", u?.errorWrapper),
465
466
  children: h.map((t, d) => {
466
- const o = t.errors[0], F = o?.code === "file-too-large" ? M : o?.code === "file-invalid-type" ? I : o?.message || I;
467
+ const o = t.errors[0], F = o?.code === "file-too-large" ? R : o?.code === "file-invalid-type" ? I : o?.message || I;
467
468
  return /* @__PURE__ */ r(
468
469
  "div",
469
470
  {
@@ -485,8 +486,8 @@ const b = (l = 0) => {
485
486
  ] });
486
487
  }
487
488
  );
488
- nt.displayName = "Dropzone";
489
+ ot.displayName = "Dropzone";
489
490
  export {
490
- nt as Dropzone
491
+ ot as Dropzone
491
492
  };
492
493
  //# sourceMappingURL=Dropzone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dropzone.js","sources":["../../src/Dropzone/Dropzone.tsx"],"sourcesContent":["import { FileTextIcon, InfoIcon, Plus, UploadIcon, X } from 'lucide-react';\r\nimport { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\r\nimport { FileRejection, useDropzone } from 'react-dropzone';\r\n\r\nimport { cn } from '@oneplatformdev/utils';\r\n\r\nimport { Card } from '../Card/Card';\r\n\r\nimport {\r\n DEFAULT_FILE_TYPES,\r\n DropzoneControl,\r\n DropzoneProps,\r\n DropzoneValueItem\r\n} from './Dropzone.types';\r\nimport { FilePreview } from './DropzoneFilePreview';\r\nimport { DropzoneSinglePickPreview } from './DropzoneSinglePickPreview';\r\nimport { extractName, isFile, isVideoUrl } from './DropzoneUtils';\r\nimport { Button } from \"../Button\";\r\nimport fileCsvIcon from './icons/file-csv.svg';\r\nimport fileDocIcon from './icons/file-doc.svg';\r\nimport fileDocxIcon from './icons/file-docx.svg';\r\nimport fileJpgIcon from './icons/file-jpg.svg';\r\nimport filePdfIcon from './icons/file-pdf.svg';\r\nimport filePngIcon from './icons/file-png.svg';\r\nimport filePptIcon from './icons/file-ppt.svg';\r\nimport filePptxIcon from './icons/file-pptx.svg';\r\nimport fileRarIcon from './icons/file-rar.svg';\r\nimport fileSvgIcon from './icons/file-svg.svg';\r\nimport fileWebpIcon from './icons/file-webp.svg';\r\nimport fileXlsIcon from './icons/file-xls.svg';\r\nimport fileXlsxIcon from './icons/file-xlsx.svg';\r\nimport fileZipIcon from './icons/file-zip.svg';\r\n\r\nconst formatFileSize = (bytes = 0): string => {\r\n if (!bytes || bytes < 0) return '0 KB';\r\n const KB = 1024;\r\n const MB = KB * 1024;\r\n const GB = MB * 1024;\r\n if (bytes >= GB) return `${(bytes / GB).toFixed(2)} GB`;\r\n if (bytes >= MB) {\r\n const mb = bytes / MB;\r\n return `${mb >= 100 ? mb.toFixed(0) : mb.toFixed(2)} MB`;\r\n }\r\n if (bytes >= KB) return `${(bytes / KB).toFixed(bytes / KB >= 100 ? 0 : 1)} KB`;\r\n return `${bytes} B`;\r\n};\r\nconst FILE_EXT_ICON_MAP: Record<string, string> = {\r\n csv: fileCsvIcon,\r\n doc: fileDocIcon,\r\n docx: fileDocxIcon,\r\n jpg: fileJpgIcon,\r\n jpeg: fileJpgIcon,\r\n pdf: filePdfIcon,\r\n png: filePngIcon,\r\n ppt: filePptIcon,\r\n pptx: filePptxIcon,\r\n rar: fileRarIcon,\r\n svg: fileSvgIcon,\r\n webp: fileWebpIcon,\r\n xls: fileXlsIcon,\r\n xlsx: fileXlsxIcon,\r\n zip: fileZipIcon,\r\n};\r\n\r\nconst getFileExtension = (fileName?: string) => {\r\n if (!fileName) return '';\r\n const parts = fileName.toLowerCase().split('.');\r\n return parts.length > 1 ? parts[parts.length - 1] : '';\r\n};\r\n\r\nconst getFileTypeIconByName = (fileName?: string) => {\r\n const extension = getFileExtension(fileName);\r\n return FILE_EXT_ICON_MAP[extension] ?? null;\r\n};\r\nconst areItemsEqual = (a: DropzoneValueItem[], b: DropzoneValueItem[]) => {\r\n if (a === b) return true;\r\n if (a.length !== b.length) return false;\r\n\r\n for (let i = 0; i < a.length; i++) {\r\n const left = a[i];\r\n const right = b[i];\r\n\r\n if (left === right) continue;\r\n\r\n if (typeof left === 'string' && typeof right === 'string') {\r\n if (left !== right) return false;\r\n continue;\r\n }\r\n\r\n if (isFile(left) && isFile(right)) {\r\n if (\r\n left.name !== right.name ||\r\n left.size !== right.size ||\r\n left.type !== right.type ||\r\n left.lastModified !== right.lastModified\r\n ) {\r\n return false;\r\n }\r\n continue;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * Dropzone component - A drag-and-drop file upload area with image previews, error handling, and localization.\r\n *\r\n * @component\r\n * @param {DropzoneProps} props - The props for the Dropzone component.\r\n * @param {string[]} [props.acceptTypes=DEFAULT_FILE_TYPES] - Allowed file MIME types.\r\n * @param {number} props.maxSizeMB - Maximum allowed file size in megabytes.\r\n * @param {number} [props.maxFiles=1] - Maximum number of files that can be uploaded.\r\n * @param {DropzoneTranslations} props.translations - Translations for text labels.\r\n * @param {(errors: FileRejection[]) => void} [props.onErrors] - Callback triggered when file errors occur.\r\n * @param {boolean} [props.hideErrors=false] - Whether to hide error messages.\r\n * @param {boolean} [props.disabled=false] - Whether the dropzone is disabled.\r\n * @param {DropzoneStyles} [props.classNames] - Custom classNames for different dropzone states.\r\n * @param {DropzoneValueItem[]} [props.value=[]] - Current selected files or URLs.\r\n * @param {(items: DropzoneValueItem[]) => void} [props.onChangeValue] - Callback triggered when file selection changes.\r\n * @param {string} [props.className] - Additional class names for styling.\r\n * @param {React.Ref<HTMLDivElement>} ref - Ref for the root dropzone container.\r\n * @returns {JSX.Element} The rendered Dropzone component.\r\n */\r\nexport const Dropzone = forwardRef<DropzoneControl, DropzoneProps>(\r\n (\r\n {\r\n acceptTypes = DEFAULT_FILE_TYPES,\r\n maxSizeMB,\r\n maxFiles = 1,\r\n onErrors,\r\n hideErrors = false,\r\n disabled = false,\r\n classNames,\r\n value,\r\n onChangeValue,\r\n className,\r\n labelDropzonePrompt = 'Drop files here or click to select',\r\n labelDropzoneSubPrompt = '',\r\n labelOrClickToSelect = 'Upload file',\r\n labelSelectedFiles = 'Selected Files',\r\n labelUploadErrors = 'Upload Errors',\r\n labelFileTooLarge = 'File is too large',\r\n labelInvalidFileType = 'Invalid file type',\r\n labelVideoUploaded = 'Uploaded',\r\n labelVideoReplace = 'Replace',\r\n singlePick = false,\r\n labelDropzoneClassname,\r\n labelDropzoneSubClassname,\r\n isUploading = false,\r\n uploadProgress = 0,\r\n uploadLoadedBytes = 0,\r\n uploadTotalBytes = 0,\r\n onCancelUpload,\r\n labelUploadingTitle = 'Uploading video...',\r\n labelUploadingHint = 'Please do not close this page',\r\n labelUploadingActionCancel = 'Cancel',\r\n labelUploadingOf = 'of',\r\n playerTranslations,\r\n singlePickFileInfo,\r\n persistentDropzone = false,\r\n previewVariant = 'default',\r\n coverFirstItem = false,\r\n ...restProps\r\n },\r\n ref\r\n ) => {\r\n const [items, setItems] = useState<DropzoneValueItem[]>(value ?? []);\r\n const [fileErrors, setFileErrors] = useState<FileRejection[]>([]);\r\n const firstItem = items[0];\r\n const firstRejectedFile = fileErrors[0]?.file;\r\n const isRejectedImage = Boolean(firstRejectedFile?.type?.includes('image'));\r\n const isSingleFile = singlePick && items.length > 0 && isFile(firstItem);\r\n const isSingleImage = isSingleFile && firstItem.type.includes('image');\r\n const isSingleVideo =\r\n (isSingleFile && firstItem.type.includes('video')) ||\r\n (singlePick && items.length > 0 && typeof firstItem === 'string' && isVideoUrl(firstItem));\r\n const isSingleDocument = isSingleFile && !isSingleImage && !isSingleVideo;\r\n const hasRejectedSingleFile = singlePick && !items.length && Boolean(firstRejectedFile);\r\n const hasRejectedSingleDocumentFile = hasRejectedSingleFile && !isRejectedImage;\r\n const singleFileCard = isSingleDocument ? firstItem : firstRejectedFile;\r\n const singleFileCardIcon = getFileTypeIconByName(singleFileCard?.name);\r\n const hasSingleVideoPreview =\r\n singlePick && isSingleVideo;\r\n const shouldBlockRootOpen = hasSingleVideoPreview;\r\n const isContentPreviewMode = singlePick && items.length > 0;\r\n\r\n const onDrop = (acceptedFiles: File[], fileRejections: FileRejection[]) => {\r\n setFileErrors(fileRejections);\r\n onErrors?.(fileRejections);\r\n\r\n const newItems = singlePick\r\n ? acceptedFiles.slice(0, 1)\r\n : [...items, ...acceptedFiles].slice(0, maxFiles);\r\n\r\n setItems(newItems);\r\n onChangeValue?.(newItems);\r\n };\r\n\r\n useEffect(() => {\r\n if (value && !areItemsEqual(items, value)) {\r\n setItems(value);\r\n }\r\n }, [items, value]);\r\n\r\n const removeItem = (\r\n event: React.MouseEvent<HTMLDivElement>,\r\n index: number\r\n ) => {\r\n if (disabled) return;\r\n event.stopPropagation();\r\n\r\n const newItems = items.filter((_, i) => i !== index);\r\n setItems(newItems);\r\n onChangeValue?.(newItems);\r\n };\r\n\r\n const { getRootProps, getInputProps, isDragActive, open } = useDropzone({\r\n onDrop,\r\n accept: acceptTypes.reduce((acc, fileType) => {\r\n acc[fileType] = [];\r\n return acc;\r\n }, {} as Record<string, string[]>),\r\n maxSize: maxSizeMB * 1024 * 1024,\r\n maxFiles: singlePick ? 1 : maxFiles,\r\n disabled: disabled || isUploading,\r\n noClick: true,\r\n });\r\n\r\n useImperativeHandle(ref, () => {\r\n return {\r\n setItems,\r\n };\r\n }, []);\r\n\r\n const isCoverMode =\r\n coverFirstItem && previewVariant === 'image-grid' && !singlePick && items.length > 0;\r\n\r\n const shouldRenderDetachedPreview =\r\n !isUploading && !singlePick && persistentDropzone && items.length > 0;\r\n\r\n const restItemsForGrid = isCoverMode ? items.slice(1) : items;\r\n\r\n const showAddMoreTile =\r\n !disabled &&\r\n !singlePick &&\r\n previewVariant === 'image-grid' &&\r\n items.length > 0 &&\r\n items.length < maxFiles;\r\n\r\n const previewBlock =\r\n !isUploading &&\r\n !singlePick &&\r\n (restItemsForGrid.length > 0 || showAddMoreTile) && (\r\n <div className={cn('w-full mt-2', classNames?.previewWrapper)}>\r\n {previewVariant === 'default' && (\r\n <pre className=\"font-semibold text-gray-600\">\r\n {labelSelectedFiles}:\r\n </pre>\r\n )}\r\n <ul\r\n className={cn(\r\n 'mt-2 text-sm text-gray-500 flex flex-wrap items-start',\r\n previewVariant === 'image-grid'\r\n ? 'gap-2 justify-start'\r\n : 'gap-4 justify-center'\r\n )}\r\n >\r\n {restItemsForGrid.map((item, gridIndex) => {\r\n const index = isCoverMode ? gridIndex + 1 : gridIndex;\r\n const fileName = isFile(item) ? item.name : extractName(item);\r\n const fileSize = isFile(item) ? formatFileSize(item.size) : '';\r\n\r\n return (\r\n <li\r\n key={index}\r\n className={cn(\r\n 'relative',\r\n previewVariant === 'image-grid'\r\n ? 'w-[75px] h-[75px]'\r\n : 'flex flex-col items-center gap-2'\r\n )}\r\n >\r\n <div className=\"relative w-full h-full\">\r\n <FilePreview item={item} styles={classNames} />\r\n <div\r\n className={cn(\r\n 'absolute top-0 right-0 cursor-pointer bg-gray-300 rounded-sm',\r\n previewVariant === 'image-grid' && 'top-1 right-1 bg-white/90 rounded-full p-0.5'\r\n )}\r\n onClick={(event) => removeItem(event, index)}\r\n >\r\n <X size={16} strokeWidth={1} color=\"black\" />\r\n </div>\r\n </div>\r\n {previewVariant === 'default' && (\r\n <span className=\"inline-flex flex-col items-center\">\r\n <span className=\"max-w-[80px] text-ellipsis overflow-hidden whitespace-nowrap\">\r\n {fileName}\r\n </span>\r\n {fileSize && <span>({fileSize})</span>}\r\n </span>\r\n )}\r\n </li>\r\n );\r\n })}\r\n {showAddMoreTile && (\r\n <li\r\n key=\"add-more\"\r\n className=\"relative w-[75px] h-[75px] flex items-center justify-center rounded-[8px] border border-dashed border-[#9368FF80] bg-[#FCFCFC] cursor-pointer hover:bg-[#9368FF0F]\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n if (disabled || isUploading) return;\r\n open();\r\n }}\r\n >\r\n <div className=\"flex size-6 items-center justify-center rounded-full bg-[#9368FF1F]\">\r\n <Plus size={16} className=\"text-[#9368FF]\" />\r\n </div>\r\n </li>\r\n )}\r\n </ul>\r\n </div>\r\n );\r\n\r\n return (\r\n <div className=\"w-full select-none\">\r\n <Card\r\n {...restProps}\r\n {...getRootProps({\r\n onClick: (event) => {\r\n if (disabled || isUploading) return;\r\n if (shouldBlockRootOpen) {\r\n restProps.onClick?.(event);\r\n return;\r\n }\r\n open();\r\n restProps.onClick?.(event);\r\n },\r\n })}\r\n className={cn(\r\n `w-full text-center flex flex-col items-center justify-center gap-6 cursor-pointer`,\r\n !isContentPreviewMode &&\r\n 'border border-dashed border-[#9368FF80] rounded-[8px] bg-[#FCFCFC] p-4',\r\n isContentPreviewMode && 'min-h-0 border-0 bg-transparent p-0',\r\n isCoverMode && 'relative',\r\n disabled && 'border-[#E4E4E7] pointer-events-none',\r\n fileErrors.length > 0 && !isContentPreviewMode && 'border-red-500',\r\n isDragActive && 'bg-gray-100',\r\n singlePick && 'shadow-none!',\r\n singlePick && items.length > 0 && !hasSingleVideoPreview && 'p-0! shadow-none!',\r\n hasSingleVideoPreview && 'h-auto! max-h-none! min-h-0! p-2!',\r\n className\r\n )}\r\n >\r\n <input {...getInputProps()} />\r\n\r\n {isUploading && (\r\n <div\r\n className=\"w-full h-full min-h-46 rounded-lg border border-[#E4E4E7] bg-[#FCFCFC] flex flex-col items-center justify-center gap-4 p-4\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <div className=\"relative h-24 w-24\">\r\n <svg className=\"h-24 w-24\" viewBox=\"0 0 100 100\">\r\n <circle cx=\"50\" cy=\"50\" r=\"42\" stroke=\"#E6E1F5\" strokeWidth=\"8\" fill=\"none\" />\r\n </svg>\r\n <span className=\"absolute inset-0 flex items-center justify-center text-lg font-semibold text-foreground\">\r\n {Math.max(0, Math.min(100, Math.round(uploadProgress)))}%\r\n </span>\r\n </div>\r\n\r\n <div className=\"text-center\">\r\n <p className=\"text-xl font-semibold text-foreground\">{labelUploadingTitle}</p>\r\n <p className=\"text-sm text-[#666A78]\">\r\n {formatFileSize(uploadLoadedBytes)} {labelUploadingOf} {formatFileSize(uploadTotalBytes)}\r\n </p>\r\n <p className=\"mt-2 text-sm text-[#666A78]\">{labelUploadingHint}</p>\r\n </div>\r\n\r\n <div className=\"w-full max-w-[520px] h-2 rounded-full bg-[#E6E1F5] overflow-hidden\">\r\n <div\r\n className=\"h-full bg-[#9368FF] transition-[width] duration-150 ease-linear\"\r\n style={{ width: `${Math.max(0, Math.min(100, uploadProgress))}%` }}\r\n />\r\n </div>\r\n\r\n {onCancelUpload && (\r\n <button\r\n type=\"button\"\r\n className=\"mt-1 h-10 min-w-36 rounded-md border border-[#E4E4E7] bg-white px-6 text-base font-medium text-foreground cursor-pointer\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n onCancelUpload();\r\n }}\r\n >\r\n {labelUploadingActionCancel}\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n\r\n {!isUploading && isCoverMode && (\r\n <div\r\n className=\"absolute inset-0 rounded-[8px] overflow-hidden\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <FilePreview\r\n item={items[0]}\r\n styles={{\r\n ...classNames,\r\n previewWraper: cn(\r\n 'w-full h-full rounded-[8px] border-0',\r\n classNames?.previewWraper?.replace(/w-\\[[^\\]]+\\]|h-\\[[^\\]]+\\]/g, ''),\r\n ),\r\n }}\r\n />\r\n <div\r\n className=\"absolute top-2 right-2 cursor-pointer bg-white/90 rounded-full p-1\"\r\n onClick={(event) => removeItem(event, 0)}\r\n >\r\n <X size={16} strokeWidth={1} color=\"black\" />\r\n </div>\r\n </div>\r\n )}\r\n\r\n {!isUploading &&\r\n (items.length === 0 || (!singlePick && persistentDropzone)) &&\r\n (fileErrors.length === 0 || !singlePick) && (\r\n <div\r\n className={cn(\r\n 'flex flex-col items-center gap-2 w-full',\r\n classNames?.idleWrapper,\r\n isCoverMode && 'invisible',\r\n )}\r\n >\r\n <div className=\"flex size-12 items-center justify-center rounded-full bg-[#9368FF1F]\">\r\n <UploadIcon className=\"size-6 text-[#9368FF]\" />\r\n </div>\r\n\r\n <div className=\"flex flex-col items-center gap-1 w-full\">\r\n {!disabled && (\r\n <>\r\n <span\r\n className={cn(\r\n \"font-semibold text-[14px] leading-[125%] text-[#06080D] text-center w-full whitespace-pre-line\",\r\n labelDropzoneClassname\r\n )}\r\n >\r\n {labelDropzonePrompt}\r\n </span>\r\n\r\n <span\r\n className={cn(\r\n \"font-medium text-[12px] leading-[120%] text-[#666A78] text-center w-full whitespace-pre-line\",\r\n labelDropzoneSubClassname\r\n )}\r\n >\r\n {labelDropzoneSubPrompt}\r\n </span>\r\n </>\r\n )}\r\n </div>\r\n\r\n {!disabled && (\r\n <Button\r\n type=\"button\"\r\n size=\"md\"\r\n >\r\n {labelOrClickToSelect}\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n\r\n {!isUploading && singlePick && fileErrors.length > 0 && !hasRejectedSingleDocumentFile && (\r\n <div className={cn('w-full mt-4', classNames?.errorWrapper)}>\r\n <span className=\"font-semibold text-red-500\">\r\n {labelUploadErrors}:\r\n </span>\r\n <ul className=\"mt-2 text-sm text-red-500 list-disc list-inside\">\r\n {fileErrors.map((fileRejection, index) => (\r\n <li key={index}>\r\n {fileRejection.file.name} (\r\n {formatFileSize(fileRejection.file.size)})\r\n {!hideErrors && (\r\n <ul className=\"ml-4 list-disc list-inside\">\r\n {fileRejection.errors.map((error, errorIndex) => (\r\n <li key={errorIndex}>\r\n {error.code === 'file-too-large' && labelFileTooLarge}\r\n {error.code === 'file-invalid-type' &&\r\n labelInvalidFileType}\r\n {error.code !== 'file-too-large' &&\r\n error.code !== 'file-invalid-type' &&\r\n error.message}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {!isUploading && Boolean(singlePick && items.length) && (\r\n <>\r\n {isSingleDocument ? (\r\n <div\r\n className=\"w-full max-w-[502px] flex flex-col items-center gap-4\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <p className=\"w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]\">\r\n {labelDropzonePrompt}\r\n </p>\r\n\r\n <div className=\"w-full min-h-[72px] rounded-[8px] bg-[#F5F5F5] p-4 flex items-center gap-4\">\r\n {singleFileCardIcon ? (\r\n <img\r\n src={singleFileCardIcon}\r\n alt=\"\"\r\n className=\"size-10 shrink-0\"\r\n />\r\n ) : (\r\n <div className=\"size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0\">\r\n <FileTextIcon size={20} />\r\n </div>\r\n )}\r\n <div className=\"flex flex-col items-start text-left gap-1 min-w-0 flex-1\">\r\n <span className=\"w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate\">\r\n {singlePickFileInfo?.name || singleFileCard?.name}\r\n </span>\r\n <span className=\"w-full text-[12px] font-medium leading-[120%] text-[#666A78]\">\r\n {formatFileSize(singlePickFileInfo?.size || singleFileCard?.size)}\r\n </span>\r\n </div>\r\n {!disabled && (\r\n <div\r\n className=\"size-6 flex items-center justify-center cursor-pointer\"\r\n onClick={(event) => removeItem(event, 0)}\r\n >\r\n <X size={24} color=\"#06080D\" />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n ) : (\r\n <DropzoneSinglePickPreview\r\n item={items[0]}\r\n onRemoveClick={(e) => removeItem(e, 0)}\r\n onReplaceClick={(e) => {\r\n e.stopPropagation();\r\n if (disabled) return;\r\n open();\r\n }}\r\n labelUploaded={labelVideoUploaded}\r\n labelReplace={labelVideoReplace}\r\n fileInfo={singlePickFileInfo}\r\n disabled={disabled}\r\n playerTranslations={playerTranslations}\r\n />\r\n )}\r\n </>\r\n )}\r\n\r\n {!isUploading && hasRejectedSingleDocumentFile && (\r\n <div\r\n className=\"w-full max-w-[502px] flex flex-col items-center gap-4\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <p className=\"w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]\">\r\n {labelDropzonePrompt}\r\n </p>\r\n\r\n <div className=\"w-full min-h-[72px] rounded-[8px] bg-[#F5F5F5] p-4 flex items-center gap-4\">\r\n {singleFileCardIcon ? (\r\n <img\r\n src={singleFileCardIcon}\r\n alt=\"\"\r\n className=\"size-10 shrink-0\"\r\n />\r\n ) : (\r\n <div className=\"size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0\">\r\n <FileTextIcon size={20} />\r\n </div>\r\n )}\r\n <div className=\"flex flex-col items-start text-left gap-1 min-w-0 flex-1\">\r\n <span className=\"w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate\">\r\n {singleFileCard?.name}\r\n </span>\r\n <span className=\"w-full text-[12px] font-medium leading-[120%] text-[#666A78]\">\r\n {singleFileCard\r\n ? `${(singleFileCard.size / (1024 * 1024)).toFixed(0)} MB`\r\n : ''}\r\n </span>\r\n </div>\r\n {!disabled && (\r\n <div\r\n className=\"size-6 flex items-center justify-center cursor-pointer\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n setFileErrors([]);\r\n }}\r\n >\r\n <X size={24} color=\"#06080D\" />\r\n </div>\r\n )}\r\n </div>\r\n\r\n <div className=\"w-full bg-[#DC26260F] p-4 flex items-start gap-4\">\r\n <InfoIcon size={20} color=\"#DC2626\" />\r\n <p className=\"text-[12px] leading-[120%] font-medium text-[#DC2626] text-left\">\r\n {fileErrors[0]?.errors?.[0]?.code === 'file-too-large'\r\n ? labelFileTooLarge\r\n : fileErrors[0]?.errors?.[0]?.message || labelInvalidFileType}\r\n </p>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {!shouldRenderDetachedPreview && previewBlock}\r\n </Card>\r\n {shouldRenderDetachedPreview && <div className=\"w-full\">{previewBlock}</div>}\r\n {!isUploading && !singlePick && fileErrors.length > 0 && (\r\n <div\r\n className={cn('w-full mt-4 flex flex-col gap-2', classNames?.errorWrapper)}\r\n >\r\n {fileErrors.map((fileRejection, index) => {\r\n const firstError = fileRejection.errors[0];\r\n const errorText =\r\n firstError?.code === 'file-too-large'\r\n ? labelFileTooLarge\r\n : firstError?.code === 'file-invalid-type'\r\n ? labelInvalidFileType\r\n : firstError?.message || labelInvalidFileType;\r\n\r\n return (\r\n <div\r\n key={index}\r\n className=\"w-full bg-[#DC26260F] p-4 flex items-start gap-4 rounded-[8px]\"\r\n >\r\n <InfoIcon size={20} color=\"#DC2626\" className=\"shrink-0\" />\r\n <p className=\"text-[12px] leading-[120%] font-medium text-[#DC2626] text-left\">\r\n <span className=\"font-semibold\">{fileRejection.file.name}</span>\r\n {' — '}\r\n {errorText}\r\n </p>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nDropzone.displayName = 'Dropzone';\r\n\r\n"],"names":["formatFileSize","bytes","KB","MB","GB","mb","FILE_EXT_ICON_MAP","fileCsvIcon","fileDocIcon","fileDocxIcon","fileJpgIcon","filePdfIcon","filePngIcon","filePptIcon","filePptxIcon","fileRarIcon","fileSvgIcon","fileWebpIcon","fileXlsIcon","fileXlsxIcon","fileZipIcon","getFileExtension","fileName","parts","getFileTypeIconByName","extension","areItemsEqual","a","b","i","left","right","isFile","Dropzone","forwardRef","acceptTypes","DEFAULT_FILE_TYPES","maxSizeMB","maxFiles","onErrors","hideErrors","disabled","classNames","value","onChangeValue","className","labelDropzonePrompt","labelDropzoneSubPrompt","labelOrClickToSelect","labelSelectedFiles","labelUploadErrors","labelFileTooLarge","labelInvalidFileType","labelVideoUploaded","labelVideoReplace","singlePick","labelDropzoneClassname","labelDropzoneSubClassname","isUploading","uploadProgress","uploadLoadedBytes","uploadTotalBytes","onCancelUpload","labelUploadingTitle","labelUploadingHint","labelUploadingActionCancel","labelUploadingOf","playerTranslations","singlePickFileInfo","persistentDropzone","previewVariant","coverFirstItem","restProps","ref","items","setItems","useState","fileErrors","setFileErrors","firstItem","firstRejectedFile","isRejectedImage","isSingleFile","isSingleImage","isSingleVideo","isVideoUrl","isSingleDocument","hasRejectedSingleDocumentFile","singleFileCard","singleFileCardIcon","hasSingleVideoPreview","shouldBlockRootOpen","isContentPreviewMode","onDrop","acceptedFiles","fileRejections","newItems","useEffect","removeItem","event","index","_","getRootProps","getInputProps","isDragActive","open","useDropzone","acc","fileType","useImperativeHandle","isCoverMode","shouldRenderDetachedPreview","restItemsForGrid","showAddMoreTile","previewBlock","jsxs","cn","item","gridIndex","extractName","fileSize","jsx","FilePreview","X","Plus","Card","UploadIcon","Fragment","Button","fileRejection","error","errorIndex","FileTextIcon","DropzoneSinglePickPreview","e","InfoIcon","firstError","errorText"],"mappings":"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"}
1
+ {"version":3,"file":"Dropzone.js","sources":["../../src/Dropzone/Dropzone.tsx"],"sourcesContent":["import { FileTextIcon, InfoIcon, Plus, UploadIcon, X } from 'lucide-react';\r\nimport { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\r\nimport { FileRejection, useDropzone } from 'react-dropzone';\r\n\r\nimport { cn } from '@oneplatformdev/utils';\r\n\r\nimport { Card } from '../Card/Card';\r\n\r\nimport {\r\n DEFAULT_FILE_TYPES,\r\n DropzoneControl,\r\n DropzoneProps,\r\n DropzoneValueItem\r\n} from './Dropzone.types';\r\nimport { FilePreview } from './DropzoneFilePreview';\r\nimport { DropzoneSinglePickPreview } from './DropzoneSinglePickPreview';\r\nimport { extractName, isFile, isVideoUrl } from './DropzoneUtils';\r\nimport { Button } from \"../Button\";\r\nimport fileCsvIcon from './icons/file-csv.svg';\r\nimport fileDocIcon from './icons/file-doc.svg';\r\nimport fileDocxIcon from './icons/file-docx.svg';\r\nimport fileJpgIcon from './icons/file-jpg.svg';\r\nimport filePdfIcon from './icons/file-pdf.svg';\r\nimport filePngIcon from './icons/file-png.svg';\r\nimport filePptIcon from './icons/file-ppt.svg';\r\nimport filePptxIcon from './icons/file-pptx.svg';\r\nimport fileRarIcon from './icons/file-rar.svg';\r\nimport fileSvgIcon from './icons/file-svg.svg';\r\nimport fileWebpIcon from './icons/file-webp.svg';\r\nimport fileXlsIcon from './icons/file-xls.svg';\r\nimport fileXlsxIcon from './icons/file-xlsx.svg';\r\nimport fileZipIcon from './icons/file-zip.svg';\r\n\r\nconst formatFileSize = (bytes = 0): string => {\r\n if (!bytes || bytes < 0) return '0 KB';\r\n const KB = 1024;\r\n const MB = KB * 1024;\r\n const GB = MB * 1024;\r\n if (bytes >= GB) return `${(bytes / GB).toFixed(2)} GB`;\r\n if (bytes >= MB) {\r\n const mb = bytes / MB;\r\n return `${mb >= 100 ? mb.toFixed(0) : mb.toFixed(2)} MB`;\r\n }\r\n if (bytes >= KB) return `${(bytes / KB).toFixed(bytes / KB >= 100 ? 0 : 1)} KB`;\r\n return `${bytes} B`;\r\n};\r\nconst FILE_EXT_ICON_MAP: Record<string, string> = {\r\n csv: fileCsvIcon,\r\n doc: fileDocIcon,\r\n docx: fileDocxIcon,\r\n jpg: fileJpgIcon,\r\n jpeg: fileJpgIcon,\r\n pdf: filePdfIcon,\r\n png: filePngIcon,\r\n ppt: filePptIcon,\r\n pptx: filePptxIcon,\r\n rar: fileRarIcon,\r\n svg: fileSvgIcon,\r\n webp: fileWebpIcon,\r\n xls: fileXlsIcon,\r\n xlsx: fileXlsxIcon,\r\n zip: fileZipIcon,\r\n};\r\n\r\nconst getFileExtension = (fileName?: string) => {\r\n if (!fileName) return '';\r\n const parts = fileName.toLowerCase().split('.');\r\n return parts.length > 1 ? parts[parts.length - 1] : '';\r\n};\r\n\r\nconst getFileTypeIconByName = (fileName?: string) => {\r\n const extension = getFileExtension(fileName);\r\n return FILE_EXT_ICON_MAP[extension] ?? null;\r\n};\r\nconst areItemsEqual = (a: DropzoneValueItem[], b: DropzoneValueItem[]) => {\r\n if (a === b) return true;\r\n if (a.length !== b.length) return false;\r\n\r\n for (let i = 0; i < a.length; i++) {\r\n const left = a[i];\r\n const right = b[i];\r\n\r\n if (left === right) continue;\r\n\r\n if (typeof left === 'string' && typeof right === 'string') {\r\n if (left !== right) return false;\r\n continue;\r\n }\r\n\r\n if (isFile(left) && isFile(right)) {\r\n if (\r\n left.name !== right.name ||\r\n left.size !== right.size ||\r\n left.type !== right.type ||\r\n left.lastModified !== right.lastModified\r\n ) {\r\n return false;\r\n }\r\n continue;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * Dropzone component - A drag-and-drop file upload area with image previews, error handling, and localization.\r\n *\r\n * @component\r\n * @param {DropzoneProps} props - The props for the Dropzone component.\r\n * @param {string[]} [props.acceptTypes=DEFAULT_FILE_TYPES] - Allowed file MIME types.\r\n * @param {number} props.maxSizeMB - Maximum allowed file size in megabytes.\r\n * @param {number} [props.maxFiles=1] - Maximum number of files that can be uploaded.\r\n * @param {DropzoneTranslations} props.translations - Translations for text labels.\r\n * @param {(errors: FileRejection[]) => void} [props.onErrors] - Callback triggered when file errors occur.\r\n * @param {boolean} [props.hideErrors=false] - Whether to hide error messages.\r\n * @param {boolean} [props.disabled=false] - Whether the dropzone is disabled.\r\n * @param {DropzoneStyles} [props.classNames] - Custom classNames for different dropzone states.\r\n * @param {DropzoneValueItem[]} [props.value=[]] - Current selected files or URLs.\r\n * @param {(items: DropzoneValueItem[]) => void} [props.onChangeValue] - Callback triggered when file selection changes.\r\n * @param {string} [props.className] - Additional class names for styling.\r\n * @param {React.Ref<HTMLDivElement>} ref - Ref for the root dropzone container.\r\n * @returns {JSX.Element} The rendered Dropzone component.\r\n */\r\nexport const Dropzone = forwardRef<DropzoneControl, DropzoneProps>(\r\n (\r\n {\r\n acceptTypes = DEFAULT_FILE_TYPES,\r\n maxSizeMB,\r\n maxFiles = 1,\r\n onErrors,\r\n hideErrors = false,\r\n disabled = false,\r\n classNames,\r\n value,\r\n onChangeValue,\r\n className,\r\n labelDropzonePrompt = 'Drop files here or click to select',\r\n labelDropzoneSubPrompt = '',\r\n labelOrClickToSelect = 'Upload file',\r\n labelSelectedFiles = 'Selected Files',\r\n labelUploadErrors = 'Upload Errors',\r\n labelFileTooLarge = 'File is too large',\r\n labelInvalidFileType = 'Invalid file type',\r\n labelVideoUploaded = 'Uploaded',\r\n labelVideoReplace = 'Replace',\r\n singlePick = false,\r\n labelDropzoneClassname,\r\n labelDropzoneSubClassname,\r\n isUploading = false,\r\n uploadProgress = 0,\r\n uploadLoadedBytes = 0,\r\n uploadTotalBytes = 0,\r\n onCancelUpload,\r\n labelUploadingTitle = 'Uploading video...',\r\n labelUploadingHint = 'Please do not close this page',\r\n labelUploadingActionCancel = 'Cancel',\r\n labelUploadingOf = 'of',\r\n playerTranslations,\r\n singlePickFileInfo,\r\n persistentDropzone = false,\r\n previewVariant = 'default',\r\n coverFirstItem = false,\r\n ...restProps\r\n },\r\n ref\r\n ) => {\r\n const [items, setItems] = useState<DropzoneValueItem[]>(value ?? []);\r\n const [fileErrors, setFileErrors] = useState<FileRejection[]>([]);\r\n const firstItem = items[0];\r\n const firstRejectedFile = fileErrors[0]?.file;\r\n const isRejectedImage = Boolean(firstRejectedFile?.type?.includes('image'));\r\n const isSingleFile = singlePick && items.length > 0 && isFile(firstItem);\r\n const isSingleImage = isSingleFile && firstItem.type.includes('image');\r\n const isSingleVideo =\r\n (isSingleFile && firstItem.type.includes('video')) ||\r\n (singlePick && items.length > 0 && typeof firstItem === 'string' && isVideoUrl(firstItem));\r\n const isSingleDocument = isSingleFile && !isSingleImage && !isSingleVideo;\r\n const hasRejectedSingleFile = singlePick && !items.length && Boolean(firstRejectedFile);\r\n const hasRejectedSingleDocumentFile = hasRejectedSingleFile && !isRejectedImage;\r\n const singleFileCard = isSingleDocument ? firstItem : firstRejectedFile;\r\n const singleFileCardIcon = getFileTypeIconByName(singleFileCard?.name);\r\n const hasSingleVideoPreview =\r\n singlePick && isSingleVideo;\r\n const shouldBlockRootOpen = hasSingleVideoPreview;\r\n const isContentPreviewMode = singlePick && items.length > 0;\r\n const isSingleImagePreview =\r\n isContentPreviewMode && !isSingleDocument && !hasSingleVideoPreview;\r\n\r\n const onDrop = (acceptedFiles: File[], fileRejections: FileRejection[]) => {\r\n setFileErrors(fileRejections);\r\n onErrors?.(fileRejections);\r\n\r\n const newItems = singlePick\r\n ? acceptedFiles.slice(0, 1)\r\n : [...items, ...acceptedFiles].slice(0, maxFiles);\r\n\r\n setItems(newItems);\r\n onChangeValue?.(newItems);\r\n };\r\n\r\n useEffect(() => {\r\n if (value && !areItemsEqual(items, value)) {\r\n setItems(value);\r\n }\r\n }, [items, value]);\r\n\r\n const removeItem = (\r\n event: React.MouseEvent<HTMLDivElement>,\r\n index: number\r\n ) => {\r\n if (disabled) return;\r\n event.stopPropagation();\r\n\r\n const newItems = items.filter((_, i) => i !== index);\r\n setItems(newItems);\r\n onChangeValue?.(newItems);\r\n };\r\n\r\n const { getRootProps, getInputProps, isDragActive, open } = useDropzone({\r\n onDrop,\r\n accept: acceptTypes.reduce((acc, fileType) => {\r\n acc[fileType] = [];\r\n return acc;\r\n }, {} as Record<string, string[]>),\r\n maxSize: maxSizeMB * 1024 * 1024,\r\n maxFiles: singlePick ? 1 : maxFiles,\r\n disabled: disabled || isUploading,\r\n noClick: true,\r\n });\r\n\r\n useImperativeHandle(ref, () => {\r\n return {\r\n setItems,\r\n };\r\n }, []);\r\n\r\n const isCoverMode =\r\n coverFirstItem && previewVariant === 'image-grid' && !singlePick && items.length > 0;\r\n\r\n const shouldRenderDetachedPreview =\r\n !isUploading && !singlePick && persistentDropzone && items.length > 0;\r\n\r\n const restItemsForGrid = isCoverMode ? items.slice(1) : items;\r\n\r\n const showAddMoreTile =\r\n !disabled &&\r\n !singlePick &&\r\n previewVariant === 'image-grid' &&\r\n items.length > 0 &&\r\n items.length < maxFiles;\r\n\r\n const previewBlock =\r\n !isUploading &&\r\n !singlePick &&\r\n (restItemsForGrid.length > 0 || showAddMoreTile) && (\r\n <div className={cn('w-full mt-2', classNames?.previewWrapper)}>\r\n {previewVariant === 'default' && (\r\n <pre className=\"font-semibold text-gray-600\">\r\n {labelSelectedFiles}:\r\n </pre>\r\n )}\r\n <ul\r\n className={cn(\r\n 'mt-2 text-sm text-gray-500 flex flex-wrap items-start',\r\n previewVariant === 'image-grid'\r\n ? 'gap-2 justify-start'\r\n : 'gap-4 justify-center'\r\n )}\r\n >\r\n {restItemsForGrid.map((item, gridIndex) => {\r\n const index = isCoverMode ? gridIndex + 1 : gridIndex;\r\n const fileName = isFile(item) ? item.name : extractName(item);\r\n const fileSize = isFile(item) ? formatFileSize(item.size) : '';\r\n\r\n return (\r\n <li\r\n key={index}\r\n className={cn(\r\n 'relative',\r\n previewVariant === 'image-grid'\r\n ? 'w-[75px] h-[75px]'\r\n : 'flex flex-col items-center gap-2'\r\n )}\r\n >\r\n <div className=\"relative w-full h-full\">\r\n <FilePreview item={item} styles={classNames} />\r\n <div\r\n className={cn(\r\n 'absolute top-0 right-0 cursor-pointer bg-gray-300 rounded-sm',\r\n previewVariant === 'image-grid' && 'top-1 right-1 bg-white/90 rounded-full p-0.5'\r\n )}\r\n onClick={(event) => removeItem(event, index)}\r\n >\r\n <X size={16} strokeWidth={1} color=\"black\" />\r\n </div>\r\n </div>\r\n {previewVariant === 'default' && (\r\n <span className=\"inline-flex flex-col items-center\">\r\n <span className=\"max-w-[80px] text-ellipsis overflow-hidden whitespace-nowrap\">\r\n {fileName}\r\n </span>\r\n {fileSize && <span>({fileSize})</span>}\r\n </span>\r\n )}\r\n </li>\r\n );\r\n })}\r\n {showAddMoreTile && (\r\n <li\r\n key=\"add-more\"\r\n className=\"relative w-[75px] h-[75px] flex items-center justify-center rounded-[8px] border border-dashed border-[#9368FF80] bg-[#FCFCFC] cursor-pointer hover:bg-[#9368FF0F]\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n if (disabled || isUploading) return;\r\n open();\r\n }}\r\n >\r\n <div className=\"flex size-6 items-center justify-center rounded-full bg-[#9368FF1F]\">\r\n <Plus size={16} className=\"text-[#9368FF]\" />\r\n </div>\r\n </li>\r\n )}\r\n </ul>\r\n </div>\r\n );\r\n\r\n return (\r\n <div className=\"w-full select-none\">\r\n <Card\r\n {...restProps}\r\n {...getRootProps({\r\n onClick: (event) => {\r\n if (disabled || isUploading) return;\r\n if (shouldBlockRootOpen) {\r\n restProps.onClick?.(event);\r\n return;\r\n }\r\n open();\r\n restProps.onClick?.(event);\r\n },\r\n })}\r\n className={cn(\r\n `w-full text-center flex flex-col items-center justify-center gap-6 cursor-pointer`,\r\n !isContentPreviewMode &&\r\n 'border border-dashed border-[#9368FF80] rounded-[8px] bg-[#FCFCFC] p-4',\r\n isContentPreviewMode && 'min-h-0 border-0 bg-transparent p-0',\r\n isCoverMode && 'relative',\r\n disabled && 'border-[#E4E4E7] pointer-events-none',\r\n fileErrors.length > 0 && !isContentPreviewMode && 'border-red-500',\r\n isDragActive && 'bg-gray-100',\r\n singlePick && 'shadow-none!',\r\n singlePick && items.length > 0 && !hasSingleVideoPreview && 'p-0! shadow-none!',\r\n hasSingleVideoPreview && 'h-auto! max-h-none! min-h-0! p-2!',\r\n isSingleImagePreview && 'h-64',\r\n className\r\n )}\r\n >\r\n <input {...getInputProps()} />\r\n\r\n {isUploading && (\r\n <div\r\n className=\"w-full h-full min-h-46 rounded-lg border border-[#E4E4E7] bg-[#FCFCFC] flex flex-col items-center justify-center gap-4 p-4\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <div className=\"relative h-24 w-24\">\r\n <svg className=\"h-24 w-24\" viewBox=\"0 0 100 100\">\r\n <circle cx=\"50\" cy=\"50\" r=\"42\" stroke=\"#E6E1F5\" strokeWidth=\"8\" fill=\"none\" />\r\n </svg>\r\n <span className=\"absolute inset-0 flex items-center justify-center text-lg font-semibold text-foreground\">\r\n {Math.max(0, Math.min(100, Math.round(uploadProgress)))}%\r\n </span>\r\n </div>\r\n\r\n <div className=\"text-center\">\r\n <p className=\"text-xl font-semibold text-foreground\">{labelUploadingTitle}</p>\r\n <p className=\"text-sm text-[#666A78]\">\r\n {formatFileSize(uploadLoadedBytes)} {labelUploadingOf} {formatFileSize(uploadTotalBytes)}\r\n </p>\r\n <p className=\"mt-2 text-sm text-[#666A78]\">{labelUploadingHint}</p>\r\n </div>\r\n\r\n <div className=\"w-full max-w-[520px] h-2 rounded-full bg-[#E6E1F5] overflow-hidden\">\r\n <div\r\n className=\"h-full bg-[#9368FF] transition-[width] duration-150 ease-linear\"\r\n style={{ width: `${Math.max(0, Math.min(100, uploadProgress))}%` }}\r\n />\r\n </div>\r\n\r\n {onCancelUpload && (\r\n <button\r\n type=\"button\"\r\n className=\"mt-1 h-10 min-w-36 rounded-md border border-[#E4E4E7] bg-white px-6 text-base font-medium text-foreground cursor-pointer\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n onCancelUpload();\r\n }}\r\n >\r\n {labelUploadingActionCancel}\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n\r\n {!isUploading && isCoverMode && (\r\n <div\r\n className=\"absolute inset-0 rounded-[8px] overflow-hidden\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <FilePreview\r\n item={items[0]}\r\n styles={{\r\n ...classNames,\r\n previewWraper: cn(\r\n 'w-full h-full rounded-[8px] border-0',\r\n classNames?.previewWraper?.replace(/w-\\[[^\\]]+\\]|h-\\[[^\\]]+\\]/g, ''),\r\n ),\r\n }}\r\n />\r\n <div\r\n className=\"absolute top-2 right-2 cursor-pointer bg-white/90 rounded-full p-1\"\r\n onClick={(event) => removeItem(event, 0)}\r\n >\r\n <X size={16} strokeWidth={1} color=\"black\" />\r\n </div>\r\n </div>\r\n )}\r\n\r\n {!isUploading &&\r\n (items.length === 0 || (!singlePick && persistentDropzone)) &&\r\n (fileErrors.length === 0 || !singlePick) && (\r\n <div\r\n className={cn(\r\n 'flex flex-col items-center gap-2 w-full',\r\n classNames?.idleWrapper,\r\n isCoverMode && 'invisible',\r\n )}\r\n >\r\n <div className=\"flex size-12 items-center justify-center rounded-full bg-[#9368FF1F]\">\r\n <UploadIcon className=\"size-6 text-[#9368FF]\" />\r\n </div>\r\n\r\n <div className=\"flex flex-col items-center gap-1 w-full\">\r\n {!disabled && (\r\n <>\r\n <span\r\n className={cn(\r\n \"font-semibold text-[14px] leading-[125%] text-[#06080D] text-center w-full whitespace-pre-line\",\r\n labelDropzoneClassname\r\n )}\r\n >\r\n {labelDropzonePrompt}\r\n </span>\r\n\r\n <span\r\n className={cn(\r\n \"font-medium text-[12px] leading-[120%] text-[#666A78] text-center w-full whitespace-pre-line\",\r\n labelDropzoneSubClassname\r\n )}\r\n >\r\n {labelDropzoneSubPrompt}\r\n </span>\r\n </>\r\n )}\r\n </div>\r\n\r\n {!disabled && (\r\n <Button\r\n type=\"button\"\r\n size=\"md\"\r\n >\r\n {labelOrClickToSelect}\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n\r\n {!isUploading && singlePick && fileErrors.length > 0 && !hasRejectedSingleDocumentFile && (\r\n <div className={cn('w-full mt-4', classNames?.errorWrapper)}>\r\n <span className=\"font-semibold text-red-500\">\r\n {labelUploadErrors}:\r\n </span>\r\n <ul className=\"mt-2 text-sm text-red-500 list-disc list-inside\">\r\n {fileErrors.map((fileRejection, index) => (\r\n <li key={index}>\r\n {fileRejection.file.name} (\r\n {formatFileSize(fileRejection.file.size)})\r\n {!hideErrors && (\r\n <ul className=\"ml-4 list-disc list-inside\">\r\n {fileRejection.errors.map((error, errorIndex) => (\r\n <li key={errorIndex}>\r\n {error.code === 'file-too-large' && labelFileTooLarge}\r\n {error.code === 'file-invalid-type' &&\r\n labelInvalidFileType}\r\n {error.code !== 'file-too-large' &&\r\n error.code !== 'file-invalid-type' &&\r\n error.message}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {!isUploading && Boolean(singlePick && items.length) && (\r\n <>\r\n {isSingleDocument ? (\r\n <div\r\n className=\"w-full max-w-[502px] flex flex-col items-center gap-4\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <p className=\"w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]\">\r\n {labelDropzonePrompt}\r\n </p>\r\n\r\n <div className=\"w-full min-h-[72px] rounded-[8px] bg-[#F5F5F5] p-4 flex items-center gap-4\">\r\n {singleFileCardIcon ? (\r\n <img\r\n src={singleFileCardIcon}\r\n alt=\"\"\r\n className=\"size-10 shrink-0\"\r\n />\r\n ) : (\r\n <div className=\"size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0\">\r\n <FileTextIcon size={20} />\r\n </div>\r\n )}\r\n <div className=\"flex flex-col items-start text-left gap-1 min-w-0 flex-1\">\r\n <span className=\"w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate\">\r\n {singlePickFileInfo?.name || singleFileCard?.name}\r\n </span>\r\n <span className=\"w-full text-[12px] font-medium leading-[120%] text-[#666A78]\">\r\n {formatFileSize(singlePickFileInfo?.size || singleFileCard?.size)}\r\n </span>\r\n </div>\r\n {!disabled && (\r\n <div\r\n className=\"size-6 flex items-center justify-center cursor-pointer\"\r\n onClick={(event) => removeItem(event, 0)}\r\n >\r\n <X size={24} color=\"#06080D\" />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n ) : (\r\n <DropzoneSinglePickPreview\r\n item={items[0]}\r\n onRemoveClick={(e) => removeItem(e, 0)}\r\n onReplaceClick={(e) => {\r\n e.stopPropagation();\r\n if (disabled) return;\r\n open();\r\n }}\r\n labelUploaded={labelVideoUploaded}\r\n labelReplace={labelVideoReplace}\r\n fileInfo={singlePickFileInfo}\r\n disabled={disabled}\r\n playerTranslations={playerTranslations}\r\n />\r\n )}\r\n </>\r\n )}\r\n\r\n {!isUploading && hasRejectedSingleDocumentFile && (\r\n <div\r\n className=\"w-full max-w-[502px] flex flex-col items-center gap-4\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <p className=\"w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]\">\r\n {labelDropzonePrompt}\r\n </p>\r\n\r\n <div className=\"w-full min-h-[72px] rounded-[8px] bg-[#F5F5F5] p-4 flex items-center gap-4\">\r\n {singleFileCardIcon ? (\r\n <img\r\n src={singleFileCardIcon}\r\n alt=\"\"\r\n className=\"size-10 shrink-0\"\r\n />\r\n ) : (\r\n <div className=\"size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0\">\r\n <FileTextIcon size={20} />\r\n </div>\r\n )}\r\n <div className=\"flex flex-col items-start text-left gap-1 min-w-0 flex-1\">\r\n <span className=\"w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate\">\r\n {singleFileCard?.name}\r\n </span>\r\n <span className=\"w-full text-[12px] font-medium leading-[120%] text-[#666A78]\">\r\n {singleFileCard\r\n ? `${(singleFileCard.size / (1024 * 1024)).toFixed(0)} MB`\r\n : ''}\r\n </span>\r\n </div>\r\n {!disabled && (\r\n <div\r\n className=\"size-6 flex items-center justify-center cursor-pointer\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n setFileErrors([]);\r\n }}\r\n >\r\n <X size={24} color=\"#06080D\" />\r\n </div>\r\n )}\r\n </div>\r\n\r\n <div className=\"w-full bg-[#DC26260F] p-4 flex items-start gap-4\">\r\n <InfoIcon size={20} color=\"#DC2626\" />\r\n <p className=\"text-[12px] leading-[120%] font-medium text-[#DC2626] text-left\">\r\n {fileErrors[0]?.errors?.[0]?.code === 'file-too-large'\r\n ? labelFileTooLarge\r\n : fileErrors[0]?.errors?.[0]?.message || labelInvalidFileType}\r\n </p>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {!shouldRenderDetachedPreview && previewBlock}\r\n </Card>\r\n {shouldRenderDetachedPreview && <div className=\"w-full\">{previewBlock}</div>}\r\n {!isUploading && !singlePick && fileErrors.length > 0 && (\r\n <div\r\n className={cn('w-full mt-4 flex flex-col gap-2', classNames?.errorWrapper)}\r\n >\r\n {fileErrors.map((fileRejection, index) => {\r\n const firstError = fileRejection.errors[0];\r\n const errorText =\r\n firstError?.code === 'file-too-large'\r\n ? labelFileTooLarge\r\n : firstError?.code === 'file-invalid-type'\r\n ? labelInvalidFileType\r\n : firstError?.message || labelInvalidFileType;\r\n\r\n return (\r\n <div\r\n key={index}\r\n className=\"w-full bg-[#DC26260F] p-4 flex items-start gap-4 rounded-[8px]\"\r\n >\r\n <InfoIcon size={20} color=\"#DC2626\" className=\"shrink-0\" />\r\n <p className=\"text-[12px] leading-[120%] font-medium text-[#DC2626] text-left\">\r\n <span className=\"font-semibold\">{fileRejection.file.name}</span>\r\n {' — '}\r\n {errorText}\r\n </p>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nDropzone.displayName = 'Dropzone';\r\n\r\n"],"names":["formatFileSize","bytes","KB","MB","GB","mb","FILE_EXT_ICON_MAP","fileCsvIcon","fileDocIcon","fileDocxIcon","fileJpgIcon","filePdfIcon","filePngIcon","filePptIcon","filePptxIcon","fileRarIcon","fileSvgIcon","fileWebpIcon","fileXlsIcon","fileXlsxIcon","fileZipIcon","getFileExtension","fileName","parts","getFileTypeIconByName","extension","areItemsEqual","a","b","i","left","right","isFile","Dropzone","forwardRef","acceptTypes","DEFAULT_FILE_TYPES","maxSizeMB","maxFiles","onErrors","hideErrors","disabled","classNames","value","onChangeValue","className","labelDropzonePrompt","labelDropzoneSubPrompt","labelOrClickToSelect","labelSelectedFiles","labelUploadErrors","labelFileTooLarge","labelInvalidFileType","labelVideoUploaded","labelVideoReplace","singlePick","labelDropzoneClassname","labelDropzoneSubClassname","isUploading","uploadProgress","uploadLoadedBytes","uploadTotalBytes","onCancelUpload","labelUploadingTitle","labelUploadingHint","labelUploadingActionCancel","labelUploadingOf","playerTranslations","singlePickFileInfo","persistentDropzone","previewVariant","coverFirstItem","restProps","ref","items","setItems","useState","fileErrors","setFileErrors","firstItem","firstRejectedFile","isRejectedImage","isSingleFile","isSingleImage","isSingleVideo","isVideoUrl","isSingleDocument","hasRejectedSingleDocumentFile","singleFileCard","singleFileCardIcon","hasSingleVideoPreview","shouldBlockRootOpen","isContentPreviewMode","isSingleImagePreview","onDrop","acceptedFiles","fileRejections","newItems","useEffect","removeItem","event","index","_","getRootProps","getInputProps","isDragActive","open","useDropzone","acc","fileType","useImperativeHandle","isCoverMode","shouldRenderDetachedPreview","restItemsForGrid","showAddMoreTile","previewBlock","jsxs","cn","item","gridIndex","extractName","fileSize","jsx","FilePreview","X","Plus","Card","UploadIcon","Fragment","Button","fileRejection","error","errorIndex","FileTextIcon","DropzoneSinglePickPreview","e","InfoIcon","firstError","errorText"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropzoneSinglePickPreview.d.ts","sourceRoot":"","sources":["../../src/Dropzone/DropzoneSinglePickPreview.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAOrD,OAAO,wCAAwC,CAAC;AAChD,OAAO,iDAAiD,CAAC;AACzD,OAAO,yDAAyD,CAAC;AACjE,OAAO,iCAAiC,CAAC;AAgBzC,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,GAAG,IAAI,GAAG,IAAI,KAAG,MAYpE,CAAC;AAqCF,UAAU,sBAAsB;IAC9B,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC1D,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,kBAAkB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtD;AAED,eAAO,MAAM,yBAAyB,GAAI,gGAQvC,sBAAsB,4CAsMxB,CAAC"}
1
+ {"version":3,"file":"DropzoneSinglePickPreview.d.ts","sourceRoot":"","sources":["../../src/Dropzone/DropzoneSinglePickPreview.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAOrD,OAAO,wCAAwC,CAAC;AAChD,OAAO,iDAAiD,CAAC;AACzD,OAAO,yDAAyD,CAAC;AACjE,OAAO,iCAAiC,CAAC;AAgBzC,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,GAAG,IAAI,GAAG,IAAI,KAAG,MAYpE,CAAC;AAqCF,UAAU,sBAAsB;IAC9B,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC1D,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,kBAAkB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtD;AAED,eAAO,MAAM,yBAAyB,GAAI,gGAQvC,sBAAsB,4CAsNxB,CAAC"}
@@ -1,16 +1,17 @@
1
- import { jsxs as d, jsx as r } from "react/jsx-runtime";
2
- import { useState as z, useMemo as l, useRef as B, useEffect as j } from "react";
3
- import { isVideoUrl as V, isFile as Y } from "./DropzoneUtils.js";
4
- import { X as C, FileIcon as $, Video as T, PencilIcon as O, Trash2 as D } from "lucide-react";
5
- import { MediaPlayer as W, MediaProvider as A, Poster as G } from "@vidstack/react";
6
- import { DefaultVideoLayout as q, defaultLayoutIcons as K } from "@vidstack/react/player/layouts/default";
7
- import { Button as _ } from "../Button/Button.js";
1
+ import { jsxs as f, jsx as o } from "react/jsx-runtime";
2
+ import { useState as x, useMemo as u, useRef as j, useEffect as B } from "react";
3
+ import { cn as V } from "@oneplatformdev/utils";
4
+ import { isVideoUrl as W, isFile as Y } from "./DropzoneUtils.js";
5
+ import { X as C, FileIcon as O, Video as D, PencilIcon as A, Trash2 as G } from "lucide-react";
6
+ import { MediaPlayer as q, MediaProvider as K, Poster as _ } from "@vidstack/react";
7
+ import { DefaultVideoLayout as H, defaultLayoutIcons as J } from "@vidstack/react/player/layouts/default";
8
+ import { Button as X } from "../Button/Button.js";
8
9
  import "@vidstack/react/player/styles/base.css";
9
10
  import "@vidstack/react/player/styles/default/theme.css";
10
11
  import "@vidstack/react/player/styles/default/layouts/video.css";
11
12
  /* empty css */
12
- import { ButtonIcon as J } from "../ButtonIcon/ButtonIcon.js";
13
- const X = `
13
+ import { ButtonIcon as Q } from "../ButtonIcon/ButtonIcon.js";
14
+ const Z = `
14
15
  .dropzone-youtube-player:not([data-fullscreen]) .vds-play-button,
15
16
  .dropzone-youtube-player[data-fullscreen="false"] .vds-play-button,
16
17
  .dropzone-youtube-player:not([data-fullscreen]) .vds-buffering-indicator,
@@ -21,7 +22,7 @@ const X = `
21
22
  .dropzone-youtube-player[data-fullscreen="false"] .vds-spinner {
22
23
  display: none !important;
23
24
  }
24
- `, H = (e) => {
25
+ `, ee = (e) => {
25
26
  if (!e) return "";
26
27
  switch (!0) {
27
28
  case (typeof e == "string" && !!e.trim() && e !== "null"):
@@ -33,168 +34,184 @@ const X = `
33
34
  default:
34
35
  return "";
35
36
  }
36
- }, Q = (e) => {
37
+ }, te = (e) => {
37
38
  if (!e) return !1;
38
39
  try {
39
- const a = new URL(e).hostname.toLowerCase();
40
- return a.includes("youtube.com") || a.includes("youtu.be");
40
+ const i = new URL(e).hostname.toLowerCase();
41
+ return i.includes("youtube.com") || i.includes("youtu.be");
41
42
  } catch {
42
43
  return !1;
43
44
  }
44
- }, Z = (e) => {
45
+ }, oe = (e) => {
45
46
  try {
46
47
  const s = new URL(e);
47
48
  if (s.hostname.toLowerCase().includes("youtu.be"))
48
49
  return s.pathname.replace("/", "").trim();
49
- const y = s.searchParams.get("v");
50
- if (y) return y.trim();
51
- const m = s.pathname.split("/").filter(Boolean), u = m.findIndex((x) => x === "embed");
52
- return u >= 0 && m[u + 1] ? m[u + 1].trim() : "";
50
+ const g = s.searchParams.get("v");
51
+ if (g) return g.trim();
52
+ const h = s.pathname.split("/").filter(Boolean), c = h.findIndex((v) => v === "embed");
53
+ return c >= 0 && h[c + 1] ? h[c + 1].trim() : "";
53
54
  } catch {
54
55
  return "";
55
56
  }
56
- }, fe = ({
57
+ }, ye = ({
57
58
  item: e,
58
59
  disabled: s,
59
- onRemoveClick: a,
60
- onReplaceClick: y,
61
- labelReplace: m = "Замінити",
62
- fileInfo: u,
63
- playerTranslations: x
60
+ onRemoveClick: i,
61
+ onReplaceClick: g,
62
+ labelReplace: h = "Замінити",
63
+ fileInfo: c,
64
+ playerTranslations: v
64
65
  }) => {
65
- const [b, N] = z(""), n = Y(e), v = n ? e.name : u?.name ?? e, o = l(
66
- () => typeof e == "string" && Q(e),
66
+ const [y, N] = x(""), [P, R] = x(!1), n = Y(e), w = n ? e.name : c?.name ?? e, r = u(
67
+ () => typeof e == "string" && te(e),
67
68
  [e]
68
- ), g = l(
69
- () => typeof e == "string" && !o && V(e),
70
- [e, o]
71
- ), f = l(
72
- () => o && typeof e == "string" ? Z(e) : "",
73
- [o, e]
74
- ), P = l(() => !o || typeof e != "string" ? "" : f ? `youtube/${f}` : e, [o, e, f]), w = l(
75
- () => f ? `https://img.youtube.com/vi/${f}/hqdefault.jpg` : void 0,
76
- [f]
77
- ), [R, F] = z(!1), [I, S] = z(!0), L = B(null), k = B(null);
78
- j(() => {
79
- F(!1), S(!0);
80
- }, [P]);
81
- const E = l(() => n && e.type?.includes("image") || typeof e == "string" && !o && !g, [e, n, o, g]), p = l(() => n && e.type?.includes("video") || o || g, [e, n, o, g]), M = l(() => {
82
- const t = n ? e.size : u?.size;
69
+ ), b = u(
70
+ () => typeof e == "string" && !r && W(e),
71
+ [e, r]
72
+ ), p = u(
73
+ () => r && typeof e == "string" ? oe(e) : "",
74
+ [r, e]
75
+ ), F = u(() => !r || typeof e != "string" ? "" : p ? `youtube/${p}` : e, [r, e, p]), z = u(
76
+ () => p ? `https://img.youtube.com/vi/${p}/hqdefault.jpg` : void 0,
77
+ [p]
78
+ ), [M, L] = x(!1), [$, S] = x(!0), k = j(null), E = j(null);
79
+ B(() => {
80
+ L(!1), S(!0);
81
+ }, [F]);
82
+ const I = u(() => n && e.type?.includes("image") || typeof e == "string" && !r && !b, [e, n, r, b]), m = u(() => n && e.type?.includes("video") || r || b, [e, n, r, b]), T = u(() => {
83
+ const t = n ? e.size : c?.size;
83
84
  if (!t || t < 0) return "";
84
- const i = 1024, h = i * 1024, U = h * 1024;
85
+ const l = 1024, a = l * 1024, U = a * 1024;
85
86
  if (t >= U) return `${(t / U).toFixed(2)} GB`;
86
- if (t >= h) {
87
- const c = t / h;
88
- return `${c >= 100 ? c.toFixed(0) : c.toFixed(2)} MB`;
87
+ if (t >= a) {
88
+ const d = t / a;
89
+ return `${d >= 100 ? d.toFixed(0) : d.toFixed(2)} MB`;
89
90
  }
90
- if (t >= i) {
91
- const c = t / i;
92
- return `${c >= 100 ? c.toFixed(0) : c.toFixed(1)} KB`;
91
+ if (t >= l) {
92
+ const d = t / l;
93
+ return `${d >= 100 ? d.toFixed(0) : d.toFixed(1)} KB`;
93
94
  }
94
95
  return `${t} B`;
95
- }, [e, n, u?.size]);
96
- return j(() => {
97
- if (E || p) {
98
- const t = H(e);
96
+ }, [e, n, c?.size]);
97
+ return B(() => {
98
+ if (I || m) {
99
+ const t = ee(e);
99
100
  if (N(t), n && t)
100
101
  return () => URL.revokeObjectURL(t);
101
102
  } else
102
103
  N("");
103
- }, [e, n, E, p]), /* @__PURE__ */ d("div", { className: "relative w-full overflow-hidden", children: [
104
- o && /* @__PURE__ */ r("style", { children: X }),
105
- p && b ? /* @__PURE__ */ r("div", { className: "w-full rounded-lg overflow-hidden bg-black", onClick: (t) => t.stopPropagation(), children: /* @__PURE__ */ r("div", { className: "aspect-video", children: /* @__PURE__ */ d(
106
- W,
104
+ }, [e, n, I, m]), /* @__PURE__ */ f("div", { className: "relative w-full h-full overflow-hidden", children: [
105
+ r && /* @__PURE__ */ o("style", { children: Z }),
106
+ m && y ? /* @__PURE__ */ o("div", { className: "w-full rounded-lg overflow-hidden bg-black", onClick: (t) => t.stopPropagation(), children: /* @__PURE__ */ o("div", { className: "aspect-video", children: /* @__PURE__ */ f(
107
+ q,
107
108
  {
108
- ref: L,
109
- title: n ? e.name : o ? void 0 : typeof e == "string" ? e : void 0,
110
- src: o ? P : { src: b, type: n ? e.type : void 0 },
111
- poster: o ? w : void 0,
112
- className: `h-full w-full bg-black text-white ${o && R ? "dropzone-youtube-player" : ""}`,
109
+ ref: k,
110
+ title: n ? e.name : r ? void 0 : typeof e == "string" ? e : void 0,
111
+ src: r ? F : { src: y, type: n ? e.type : void 0 },
112
+ poster: r ? z : void 0,
113
+ className: `h-full w-full bg-black text-white ${r && M ? "dropzone-youtube-player" : ""}`,
113
114
  playsInline: !0,
114
115
  onPlay: () => {
115
- S(!1), o && F(!0);
116
+ S(!1), r && L(!0);
116
117
  },
117
118
  onVolumeChange: (t) => {
118
- if (!o) return;
119
- const i = t.volume === 0 || t.muted;
120
- if (k.current === i) return;
121
- k.current = i;
122
- const h = L.current?.el?.querySelector("iframe");
123
- h?.contentWindow && h.contentWindow.postMessage(
124
- JSON.stringify({ event: "command", func: i ? "mute" : "unMute", args: [] }),
119
+ if (!r) return;
120
+ const l = t.volume === 0 || t.muted;
121
+ if (E.current === l) return;
122
+ E.current = l;
123
+ const a = k.current?.el?.querySelector("iframe");
124
+ a?.contentWindow && a.contentWindow.postMessage(
125
+ JSON.stringify({ event: "command", func: l ? "mute" : "unMute", args: [] }),
125
126
  "*"
126
127
  );
127
128
  },
128
129
  children: [
129
- /* @__PURE__ */ r(A, {}),
130
- I && o && w && /* @__PURE__ */ r(
131
- G,
130
+ /* @__PURE__ */ o(K, {}),
131
+ $ && r && z && /* @__PURE__ */ o(
132
+ _,
132
133
  {
133
134
  className: "absolute inset-0 h-full w-full object-cover",
134
- src: w,
135
+ src: z,
135
136
  alt: typeof e == "string" ? e : ""
136
137
  }
137
138
  ),
138
- /* @__PURE__ */ r(
139
- q,
139
+ /* @__PURE__ */ o(
140
+ H,
140
141
  {
141
- icons: K,
142
- translations: x,
142
+ icons: J,
143
+ translations: v,
143
144
  noAudioGain: !0,
144
145
  slots: { pipButton: null, googleCastButton: null }
145
146
  }
146
147
  )
147
148
  ]
148
149
  }
149
- ) }) }) : !p && b ? /* @__PURE__ */ d("div", { className: "relative w-full h-64 sm:h-80 md:h-96 overflow-hidden outline-[#E4E4E7] outline-2 outline-dashed -outline-offset-1 rounded-lg", children: [
150
- !s && /* @__PURE__ */ r("div", { className: "absolute top-2 right-2 cursor-pointer bg-white/70 rounded-[4px] p-1 shadow-sm", onClick: a, children: /* @__PURE__ */ r(C, { size: 16, strokeWidth: 2, color: "black" }) }),
151
- /* @__PURE__ */ r(
150
+ ) }) }) : !m && y ? /* @__PURE__ */ f("div", { className: "relative flex w-full h-full items-center justify-center overflow-hidden outline-[#E4E4E7] outline-2 outline-dashed -outline-offset-1 rounded-lg", children: [
151
+ !P && /* @__PURE__ */ o(
152
+ "div",
153
+ {
154
+ className: "absolute inset-0 scale-110 bg-cover bg-center opacity-80 blur-xl",
155
+ style: { backgroundImage: `url(${y})` }
156
+ }
157
+ ),
158
+ !s && /* @__PURE__ */ o("div", { className: "absolute top-2 right-2 z-20 cursor-pointer bg-white/70 rounded-[4px] p-1 shadow-sm", onClick: i, children: /* @__PURE__ */ o(C, { size: 16, strokeWidth: 2, color: "black" }) }),
159
+ /* @__PURE__ */ o(
152
160
  "img",
153
161
  {
154
- src: b,
155
- alt: v?.toString(),
156
- className: "w-full h-full object-cover rounded-lg"
162
+ src: y,
163
+ alt: w?.toString(),
164
+ onLoad: (t) => {
165
+ const { naturalWidth: l, naturalHeight: a } = t.currentTarget;
166
+ R(
167
+ !!l && !!a && l > a
168
+ );
169
+ },
170
+ className: V(
171
+ "relative h-full rounded-lg",
172
+ P ? "w-full object-cover" : "z-10 max-w-full object-contain"
173
+ )
157
174
  }
158
175
  )
159
- ] }) : p ? null : /* @__PURE__ */ d("div", { className: "relative w-full h-64 sm:h-80 md:h-96 overflow-hidden outline-[#E4E4E7] outline-2 outline-dashed -outline-offset-1 rounded-lg", children: [
160
- !s && /* @__PURE__ */ r("div", { className: "absolute top-2 right-2 cursor-pointer bg-white/70 rounded-[4px] p-1 shadow-sm", onClick: a, children: /* @__PURE__ */ r(C, { size: 16, strokeWidth: 2, color: "black" }) }),
161
- /* @__PURE__ */ d("div", { className: "w-full h-full flex flex-col items-center justify-center text-gray-600", children: [
162
- /* @__PURE__ */ r($, { size: 28 }),
163
- /* @__PURE__ */ r("span", { className: "text-sm mt-2 break-all px-2 text-center", children: v?.toString() })
176
+ ] }) : m ? null : /* @__PURE__ */ f("div", { className: "relative w-full h-full overflow-hidden outline-[#E4E4E7] outline-2 outline-dashed -outline-offset-1 rounded-lg", children: [
177
+ !s && /* @__PURE__ */ o("div", { className: "absolute top-2 right-2 cursor-pointer bg-white/70 rounded-[4px] p-1 shadow-sm", onClick: i, children: /* @__PURE__ */ o(C, { size: 16, strokeWidth: 2, color: "black" }) }),
178
+ /* @__PURE__ */ f("div", { className: "w-full h-full flex flex-col items-center justify-center text-gray-600", children: [
179
+ /* @__PURE__ */ o(O, { size: 28 }),
180
+ /* @__PURE__ */ o("span", { className: "text-sm mt-2 break-all px-2 text-center", children: w?.toString() })
164
181
  ] })
165
182
  ] }),
166
- p && !o && /* @__PURE__ */ d(
183
+ m && !r && /* @__PURE__ */ f(
167
184
  "div",
168
185
  {
169
186
  className: "mt-2 w-full h-auto min-h-14 rounded-[8px] border border-[#E8E9EB] bg-[#FCFCFC] p-2 flex items-center gap-4",
170
187
  onClick: (t) => t.stopPropagation(),
171
188
  children: [
172
- /* @__PURE__ */ r("div", { className: "size-10 rounded-[8px] bg-[#9368FF1F] flex items-center justify-center shrink-0", children: /* @__PURE__ */ r(T, { className: "size-6 text-[#06080D]" }) }),
173
- /* @__PURE__ */ d("div", { className: "flex flex-col items-start text-left gap-1 min-w-0 flex-1 justify-start", children: [
174
- /* @__PURE__ */ r("span", { className: "w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate text-left", children: v?.toString() }),
175
- /* @__PURE__ */ r("span", { className: "w-full text-[12px] font-medium leading-[120%] text-[#363B4E] text-left", children: M })
189
+ /* @__PURE__ */ o("div", { className: "size-10 rounded-[8px] bg-[#9368FF1F] flex items-center justify-center shrink-0", children: /* @__PURE__ */ o(D, { className: "size-6 text-[#06080D]" }) }),
190
+ /* @__PURE__ */ f("div", { className: "flex flex-col items-start text-left gap-1 min-w-0 flex-1 justify-start", children: [
191
+ /* @__PURE__ */ o("span", { className: "w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate text-left", children: w?.toString() }),
192
+ /* @__PURE__ */ o("span", { className: "w-full text-[12px] font-medium leading-[120%] text-[#363B4E] text-left", children: T })
176
193
  ] }),
177
- !s && /* @__PURE__ */ r(
178
- _,
194
+ !s && /* @__PURE__ */ o(
195
+ X,
179
196
  {
180
197
  type: "button",
181
198
  color: "secondary",
182
- startAdornment: O,
199
+ startAdornment: A,
183
200
  size: "md",
184
201
  onClick: (t) => {
185
- t.stopPropagation(), y?.(t);
202
+ t.stopPropagation(), g?.(t);
186
203
  },
187
- children: m
204
+ children: h
188
205
  }
189
206
  ),
190
- !s && /* @__PURE__ */ r(
191
- J,
207
+ !s && /* @__PURE__ */ o(
208
+ Q,
192
209
  {
193
- icon: D,
210
+ icon: G,
194
211
  variant: "outlined",
195
212
  size: "md",
196
213
  color: "secondary",
197
- onClick: a
214
+ onClick: i
198
215
  }
199
216
  )
200
217
  ]
@@ -203,7 +220,7 @@ const X = `
203
220
  ] });
204
221
  };
205
222
  export {
206
- fe as DropzoneSinglePickPreview,
207
- H as transformImageToSrc
223
+ ye as DropzoneSinglePickPreview,
224
+ ee as transformImageToSrc
208
225
  };
209
226
  //# sourceMappingURL=DropzoneSinglePickPreview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropzoneSinglePickPreview.js","sources":["../../src/Dropzone/DropzoneSinglePickPreview.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\r\nimport { DropzoneValueItem } from './Dropzone.types';\r\nimport { isFile, isVideoUrl } from './DropzoneUtils';\r\nimport { FileIcon, PencilIcon, Trash2, Video, X } from 'lucide-react';\r\nimport { MediaPlayer, type MediaPlayerInstance, MediaProvider, Poster } from '@vidstack/react';\r\nimport { defaultLayoutIcons, DefaultVideoLayout } from '@vidstack/react/player/layouts/default';\r\nimport { Button } from '../Button/Button';\r\n\r\nimport '@vidstack/react/player/styles/base.css';\r\nimport '@vidstack/react/player/styles/default/theme.css';\r\nimport '@vidstack/react/player/styles/default/layouts/video.css';\r\nimport './DropzoneSinglePickPreview.css';\r\nimport { ButtonIcon } from \"../ButtonIcon\";\r\n\r\nconst YOUTUBE_PLAYER_STYLES = `\r\n.dropzone-youtube-player:not([data-fullscreen]) .vds-play-button,\r\n.dropzone-youtube-player[data-fullscreen=\"false\"] .vds-play-button,\r\n.dropzone-youtube-player:not([data-fullscreen]) .vds-buffering-indicator,\r\n.dropzone-youtube-player[data-fullscreen=\"false\"] .vds-buffering-indicator,\r\n.dropzone-youtube-player:not([data-fullscreen]) .vds-loading-indicator,\r\n.dropzone-youtube-player[data-fullscreen=\"false\"] .vds-loading-indicator,\r\n.dropzone-youtube-player:not([data-fullscreen]) .vds-spinner,\r\n.dropzone-youtube-player[data-fullscreen=\"false\"] .vds-spinner {\r\n display: none !important;\r\n}\r\n`;\r\n\r\nexport const transformImageToSrc = (preview?: string | File | null): string => {\r\n if (!preview) return '';\r\n switch (true) {\r\n case typeof preview === 'string' && !!preview.trim() && preview !== 'null':\r\n return preview;\r\n case preview instanceof File:\r\n return URL.createObjectURL(preview);\r\n case preview instanceof FileList:\r\n return preview[0] ? URL.createObjectURL(preview[0]) : '';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nconst isYoutubeUrl = (value?: string | null) => {\r\n if (!value) return false;\r\n try {\r\n const url = new URL(value);\r\n const hostname = url.hostname.toLowerCase();\r\n return hostname.includes('youtube.com') || hostname.includes('youtu.be');\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\nconst extractYoutubeId = (value: string) => {\r\n try {\r\n const url = new URL(value);\r\n const hostname = url.hostname.toLowerCase();\r\n\r\n if (hostname.includes('youtu.be')) {\r\n return url.pathname.replace('/', '').trim();\r\n }\r\n\r\n const searchId = url.searchParams.get('v');\r\n if (searchId) return searchId.trim();\r\n\r\n const pathParts = url.pathname.split('/').filter(Boolean);\r\n const embedIndex = pathParts.findIndex((part) => part === 'embed');\r\n if (embedIndex >= 0 && pathParts[embedIndex + 1]) {\r\n return pathParts[embedIndex + 1].trim();\r\n }\r\n\r\n return '';\r\n } catch {\r\n return '';\r\n }\r\n};\r\n\r\ninterface SinglePickPreviewProps {\r\n item: DropzoneValueItem;\r\n disabled?: boolean;\r\n onRemoveClick: (e: React.MouseEvent<HTMLElement>) => void;\r\n onReplaceClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\r\n labelUploaded?: string;\r\n labelReplace?: string;\r\n fileInfo?: { name?: string; size?: number };\r\n playerTranslations?: Partial<Record<string, string>>;\r\n}\r\n\r\nexport const DropzoneSinglePickPreview = ({\r\n item,\r\n disabled,\r\n onRemoveClick,\r\n onReplaceClick,\r\n labelReplace = 'Замінити',\r\n fileInfo,\r\n playerTranslations,\r\n}: SinglePickPreviewProps) => {\r\n const [previewUrl, setPreviewUrl] = useState('');\r\n const isFileType = isFile(item);\r\n const fileName = isFileType ? item.name : (fileInfo?.name ?? item);\r\n\r\n const isYoutubeVideo = useMemo(\r\n () => typeof item === 'string' && isYoutubeUrl(item),\r\n [item]\r\n );\r\n const isRemoteVideo = useMemo(\r\n () => typeof item === 'string' && !isYoutubeVideo && isVideoUrl(item),\r\n [item, isYoutubeVideo]\r\n );\r\n const youtubeId = useMemo(\r\n () => (isYoutubeVideo && typeof item === 'string' ? extractYoutubeId(item) : ''),\r\n [isYoutubeVideo, item]\r\n );\r\n const youtubeSource = useMemo(() => {\r\n if (!isYoutubeVideo || typeof item !== 'string') return '';\r\n return youtubeId ? `youtube/${youtubeId}` : item;\r\n }, [isYoutubeVideo, item, youtubeId]);\r\n const youtubeThumbnail = useMemo(\r\n () => (youtubeId ? `https://img.youtube.com/vi/${youtubeId}/hqdefault.jpg` : undefined),\r\n [youtubeId]\r\n );\r\n const [youtubeStarted, setYoutubeStarted] = useState(false);\r\n const [showPoster, setShowPoster] = useState(true);\r\n const mediaPlayerRef = useRef<MediaPlayerInstance>(null);\r\n const lastMuteStateRef = useRef<boolean | null>(null);\r\n\r\n useEffect(() => {\r\n setYoutubeStarted(false);\r\n setShowPoster(true);\r\n }, [youtubeSource]);\r\n\r\n const showImage = useMemo(() => {\r\n return (isFileType && item.type?.includes('image')) || (typeof item === 'string' && !isYoutubeVideo && !isRemoteVideo);\r\n }, [item, isFileType, isYoutubeVideo, isRemoteVideo]);\r\n\r\n const showVideo = useMemo(() => {\r\n return (isFileType && item.type?.includes('video')) || isYoutubeVideo || isRemoteVideo;\r\n }, [item, isFileType, isYoutubeVideo, isRemoteVideo]);\r\n\r\n const fileSize = useMemo(() => {\r\n const bytes = isFileType ? item.size : fileInfo?.size;\r\n if (!bytes || bytes < 0) return '';\r\n const K = 1024, M = K * 1024, G = M * 1024;\r\n if (bytes >= G) return `${(bytes / G).toFixed(2)} GB`;\r\n if (bytes >= M) {\r\n const v = bytes / M;\r\n return `${v >= 100 ? v.toFixed(0) : v.toFixed(2)} MB`;\r\n }\r\n if (bytes >= K) {\r\n const v = bytes / K;\r\n return `${v >= 100 ? v.toFixed(0) : v.toFixed(1)} KB`;\r\n }\r\n return `${bytes} B`;\r\n }, [item, isFileType, fileInfo?.size]);\r\n\r\n useEffect(() => {\r\n if (showImage || showVideo) {\r\n const nextPreview = transformImageToSrc(item);\r\n setPreviewUrl(nextPreview);\r\n\r\n if (isFileType && nextPreview) {\r\n return () => URL.revokeObjectURL(nextPreview);\r\n }\r\n } else {\r\n setPreviewUrl('');\r\n }\r\n\r\n return undefined;\r\n }, [item, isFileType, showImage, showVideo]);\r\n\r\n return (\r\n <div className=\"relative w-full overflow-hidden\">\r\n {isYoutubeVideo && <style>{YOUTUBE_PLAYER_STYLES}</style>}\r\n {showVideo && previewUrl ? (\r\n <div className=\"w-full rounded-lg overflow-hidden bg-black\" onClick={(event) => event.stopPropagation()}>\r\n <div className=\"aspect-video\">\r\n <MediaPlayer\r\n ref={mediaPlayerRef}\r\n title={isFileType ? (item as File).name : isYoutubeVideo ? undefined : (typeof item === 'string' ? item : undefined)}\r\n src={isYoutubeVideo ? youtubeSource : { src: previewUrl, type: isFileType ? (item as File).type : undefined }}\r\n poster={isYoutubeVideo ? youtubeThumbnail : undefined}\r\n className={`h-full w-full bg-black text-white ${\r\n isYoutubeVideo && youtubeStarted ? 'dropzone-youtube-player' : ''\r\n }`}\r\n playsInline\r\n onPlay={() => {\r\n setShowPoster(false);\r\n if (isYoutubeVideo) setYoutubeStarted(true);\r\n }}\r\n onVolumeChange={(detail) => {\r\n if (!isYoutubeVideo) return;\r\n const shouldMute = detail.volume === 0 || detail.muted;\r\n if (lastMuteStateRef.current === shouldMute) return;\r\n lastMuteStateRef.current = shouldMute;\r\n const iframe = mediaPlayerRef.current?.el?.querySelector('iframe') as HTMLIFrameElement | null;\r\n if (!iframe?.contentWindow) return;\r\n iframe.contentWindow.postMessage(\r\n JSON.stringify({ event: 'command', func: shouldMute ? 'mute' : 'unMute', args: [] }),\r\n '*'\r\n );\r\n }}\r\n >\r\n <MediaProvider />\r\n {showPoster && isYoutubeVideo && youtubeThumbnail && (\r\n <Poster\r\n className=\"absolute inset-0 h-full w-full object-cover\"\r\n src={youtubeThumbnail}\r\n alt={typeof item === 'string' ? item : ''}\r\n />\r\n )}\r\n <DefaultVideoLayout\r\n icons={defaultLayoutIcons}\r\n translations={playerTranslations as never}\r\n noAudioGain\r\n slots={{ pipButton: null, googleCastButton: null }}\r\n />\r\n </MediaPlayer>\r\n </div>\r\n </div>\r\n ) : !showVideo && previewUrl ? (\r\n <div className=\"relative w-full h-64 sm:h-80 md:h-96 overflow-hidden outline-[#E4E4E7] outline-2 outline-dashed -outline-offset-1 rounded-lg\">\r\n {!disabled && (\r\n <div className=\"absolute top-2 right-2 cursor-pointer bg-white/70 rounded-[4px] p-1 shadow-sm\" onClick={onRemoveClick} >\r\n <X size={16} strokeWidth={2} color=\"black\" />\r\n </div>\r\n )}\r\n <img\r\n src={previewUrl}\r\n alt={fileName?.toString()}\r\n className=\"w-full h-full object-cover rounded-lg\"\r\n />\r\n </div>\r\n ) : !showVideo ? (\r\n <div className=\"relative w-full h-64 sm:h-80 md:h-96 overflow-hidden outline-[#E4E4E7] outline-2 outline-dashed -outline-offset-1 rounded-lg\">\r\n {!disabled && (\r\n <div className=\"absolute top-2 right-2 cursor-pointer bg-white/70 rounded-[4px] p-1 shadow-sm\" onClick={onRemoveClick} >\r\n <X size={16} strokeWidth={2} color=\"black\" />\r\n </div>\r\n )}\r\n <div className=\"w-full h-full flex flex-col items-center justify-center text-gray-600\">\r\n <FileIcon size={28} />\r\n <span className=\"text-sm mt-2 break-all px-2 text-center\">\r\n {fileName?.toString()}\r\n </span>\r\n </div>\r\n </div>\r\n ) : null}\r\n\r\n {showVideo && !isYoutubeVideo && (\r\n <div\r\n className=\"mt-2 w-full h-auto min-h-14 rounded-[8px] border border-[#E8E9EB] bg-[#FCFCFC] p-2 flex items-center gap-4\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <div className=\"size-10 rounded-[8px] bg-[#9368FF1F] flex items-center justify-center shrink-0\">\r\n <Video className=\"size-6 text-[#06080D]\" />\r\n </div>\r\n\r\n <div className=\"flex flex-col items-start text-left gap-1 min-w-0 flex-1 justify-start\">\r\n <span className=\"w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate text-left\">\r\n {fileName?.toString()}\r\n </span>\r\n <span className=\"w-full text-[12px] font-medium leading-[120%] text-[#363B4E] text-left\">\r\n {fileSize}\r\n </span>\r\n </div>\r\n\r\n {!disabled && (\r\n <Button\r\n type=\"button\"\r\n color=\"secondary\"\r\n startAdornment={PencilIcon}\r\n size=\"md\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n onReplaceClick?.(event);\r\n }}\r\n >\r\n {labelReplace}\r\n </Button>\r\n )}\r\n\r\n {!disabled && (\r\n <ButtonIcon\r\n icon={Trash2}\r\n variant=\"outlined\"\r\n size=\"md\"\r\n color=\"secondary\"\r\n onClick={onRemoveClick}\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n"],"names":["YOUTUBE_PLAYER_STYLES","transformImageToSrc","preview","isYoutubeUrl","value","hostname","extractYoutubeId","url","searchId","pathParts","embedIndex","part","DropzoneSinglePickPreview","item","disabled","onRemoveClick","onReplaceClick","labelReplace","fileInfo","playerTranslations","previewUrl","setPreviewUrl","useState","isFileType","isFile","fileName","isYoutubeVideo","useMemo","isRemoteVideo","isVideoUrl","youtubeId","youtubeSource","youtubeThumbnail","youtubeStarted","setYoutubeStarted","showPoster","setShowPoster","mediaPlayerRef","useRef","lastMuteStateRef","useEffect","showImage","showVideo","fileSize","bytes","K","M","G","v","nextPreview","jsxs","jsx","event","MediaPlayer","detail","shouldMute","iframe","MediaProvider","Poster","DefaultVideoLayout","defaultLayoutIcons","X","FileIcon","Video","Button","PencilIcon","ButtonIcon","Trash2"],"mappings":"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"}
1
+ {"version":3,"file":"DropzoneSinglePickPreview.js","sources":["../../src/Dropzone/DropzoneSinglePickPreview.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\r\nimport { cn } from '@oneplatformdev/utils';\r\nimport { DropzoneValueItem } from './Dropzone.types';\r\nimport { isFile, isVideoUrl } from './DropzoneUtils';\r\nimport { FileIcon, PencilIcon, Trash2, Video, X } from 'lucide-react';\r\nimport { MediaPlayer, type MediaPlayerInstance, MediaProvider, Poster } from '@vidstack/react';\r\nimport { defaultLayoutIcons, DefaultVideoLayout } from '@vidstack/react/player/layouts/default';\r\nimport { Button } from '../Button/Button';\r\n\r\nimport '@vidstack/react/player/styles/base.css';\r\nimport '@vidstack/react/player/styles/default/theme.css';\r\nimport '@vidstack/react/player/styles/default/layouts/video.css';\r\nimport './DropzoneSinglePickPreview.css';\r\nimport { ButtonIcon } from \"../ButtonIcon\";\r\n\r\nconst YOUTUBE_PLAYER_STYLES = `\r\n.dropzone-youtube-player:not([data-fullscreen]) .vds-play-button,\r\n.dropzone-youtube-player[data-fullscreen=\"false\"] .vds-play-button,\r\n.dropzone-youtube-player:not([data-fullscreen]) .vds-buffering-indicator,\r\n.dropzone-youtube-player[data-fullscreen=\"false\"] .vds-buffering-indicator,\r\n.dropzone-youtube-player:not([data-fullscreen]) .vds-loading-indicator,\r\n.dropzone-youtube-player[data-fullscreen=\"false\"] .vds-loading-indicator,\r\n.dropzone-youtube-player:not([data-fullscreen]) .vds-spinner,\r\n.dropzone-youtube-player[data-fullscreen=\"false\"] .vds-spinner {\r\n display: none !important;\r\n}\r\n`;\r\n\r\nexport const transformImageToSrc = (preview?: string | File | null): string => {\r\n if (!preview) return '';\r\n switch (true) {\r\n case typeof preview === 'string' && !!preview.trim() && preview !== 'null':\r\n return preview;\r\n case preview instanceof File:\r\n return URL.createObjectURL(preview);\r\n case preview instanceof FileList:\r\n return preview[0] ? URL.createObjectURL(preview[0]) : '';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nconst isYoutubeUrl = (value?: string | null) => {\r\n if (!value) return false;\r\n try {\r\n const url = new URL(value);\r\n const hostname = url.hostname.toLowerCase();\r\n return hostname.includes('youtube.com') || hostname.includes('youtu.be');\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\nconst extractYoutubeId = (value: string) => {\r\n try {\r\n const url = new URL(value);\r\n const hostname = url.hostname.toLowerCase();\r\n\r\n if (hostname.includes('youtu.be')) {\r\n return url.pathname.replace('/', '').trim();\r\n }\r\n\r\n const searchId = url.searchParams.get('v');\r\n if (searchId) return searchId.trim();\r\n\r\n const pathParts = url.pathname.split('/').filter(Boolean);\r\n const embedIndex = pathParts.findIndex((part) => part === 'embed');\r\n if (embedIndex >= 0 && pathParts[embedIndex + 1]) {\r\n return pathParts[embedIndex + 1].trim();\r\n }\r\n\r\n return '';\r\n } catch {\r\n return '';\r\n }\r\n};\r\n\r\ninterface SinglePickPreviewProps {\r\n item: DropzoneValueItem;\r\n disabled?: boolean;\r\n onRemoveClick: (e: React.MouseEvent<HTMLElement>) => void;\r\n onReplaceClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\r\n labelUploaded?: string;\r\n labelReplace?: string;\r\n fileInfo?: { name?: string; size?: number };\r\n playerTranslations?: Partial<Record<string, string>>;\r\n}\r\n\r\nexport const DropzoneSinglePickPreview = ({\r\n item,\r\n disabled,\r\n onRemoveClick,\r\n onReplaceClick,\r\n labelReplace = 'Замінити',\r\n fileInfo,\r\n playerTranslations,\r\n}: SinglePickPreviewProps) => {\r\n const [previewUrl, setPreviewUrl] = useState('');\r\n const [isWideImage, setIsWideImage] = useState(false);\r\n const isFileType = isFile(item);\r\n const fileName = isFileType ? item.name : (fileInfo?.name ?? item);\r\n\r\n const isYoutubeVideo = useMemo(\r\n () => typeof item === 'string' && isYoutubeUrl(item),\r\n [item]\r\n );\r\n const isRemoteVideo = useMemo(\r\n () => typeof item === 'string' && !isYoutubeVideo && isVideoUrl(item),\r\n [item, isYoutubeVideo]\r\n );\r\n const youtubeId = useMemo(\r\n () => (isYoutubeVideo && typeof item === 'string' ? extractYoutubeId(item) : ''),\r\n [isYoutubeVideo, item]\r\n );\r\n const youtubeSource = useMemo(() => {\r\n if (!isYoutubeVideo || typeof item !== 'string') return '';\r\n return youtubeId ? `youtube/${youtubeId}` : item;\r\n }, [isYoutubeVideo, item, youtubeId]);\r\n const youtubeThumbnail = useMemo(\r\n () => (youtubeId ? `https://img.youtube.com/vi/${youtubeId}/hqdefault.jpg` : undefined),\r\n [youtubeId]\r\n );\r\n const [youtubeStarted, setYoutubeStarted] = useState(false);\r\n const [showPoster, setShowPoster] = useState(true);\r\n const mediaPlayerRef = useRef<MediaPlayerInstance>(null);\r\n const lastMuteStateRef = useRef<boolean | null>(null);\r\n\r\n useEffect(() => {\r\n setYoutubeStarted(false);\r\n setShowPoster(true);\r\n }, [youtubeSource]);\r\n\r\n const showImage = useMemo(() => {\r\n return (isFileType && item.type?.includes('image')) || (typeof item === 'string' && !isYoutubeVideo && !isRemoteVideo);\r\n }, [item, isFileType, isYoutubeVideo, isRemoteVideo]);\r\n\r\n const showVideo = useMemo(() => {\r\n return (isFileType && item.type?.includes('video')) || isYoutubeVideo || isRemoteVideo;\r\n }, [item, isFileType, isYoutubeVideo, isRemoteVideo]);\r\n\r\n const fileSize = useMemo(() => {\r\n const bytes = isFileType ? item.size : fileInfo?.size;\r\n if (!bytes || bytes < 0) return '';\r\n const K = 1024, M = K * 1024, G = M * 1024;\r\n if (bytes >= G) return `${(bytes / G).toFixed(2)} GB`;\r\n if (bytes >= M) {\r\n const v = bytes / M;\r\n return `${v >= 100 ? v.toFixed(0) : v.toFixed(2)} MB`;\r\n }\r\n if (bytes >= K) {\r\n const v = bytes / K;\r\n return `${v >= 100 ? v.toFixed(0) : v.toFixed(1)} KB`;\r\n }\r\n return `${bytes} B`;\r\n }, [item, isFileType, fileInfo?.size]);\r\n\r\n useEffect(() => {\r\n if (showImage || showVideo) {\r\n const nextPreview = transformImageToSrc(item);\r\n setPreviewUrl(nextPreview);\r\n\r\n if (isFileType && nextPreview) {\r\n return () => URL.revokeObjectURL(nextPreview);\r\n }\r\n } else {\r\n setPreviewUrl('');\r\n }\r\n\r\n return undefined;\r\n }, [item, isFileType, showImage, showVideo]);\r\n\r\n return (\r\n <div className=\"relative w-full h-full overflow-hidden\">\r\n {isYoutubeVideo && <style>{YOUTUBE_PLAYER_STYLES}</style>}\r\n {showVideo && previewUrl ? (\r\n <div className=\"w-full rounded-lg overflow-hidden bg-black\" onClick={(event) => event.stopPropagation()}>\r\n <div className=\"aspect-video\">\r\n <MediaPlayer\r\n ref={mediaPlayerRef}\r\n title={isFileType ? (item as File).name : isYoutubeVideo ? undefined : (typeof item === 'string' ? item : undefined)}\r\n src={isYoutubeVideo ? youtubeSource : { src: previewUrl, type: isFileType ? (item as File).type : undefined }}\r\n poster={isYoutubeVideo ? youtubeThumbnail : undefined}\r\n className={`h-full w-full bg-black text-white ${\r\n isYoutubeVideo && youtubeStarted ? 'dropzone-youtube-player' : ''\r\n }`}\r\n playsInline\r\n onPlay={() => {\r\n setShowPoster(false);\r\n if (isYoutubeVideo) setYoutubeStarted(true);\r\n }}\r\n onVolumeChange={(detail) => {\r\n if (!isYoutubeVideo) return;\r\n const shouldMute = detail.volume === 0 || detail.muted;\r\n if (lastMuteStateRef.current === shouldMute) return;\r\n lastMuteStateRef.current = shouldMute;\r\n const iframe = mediaPlayerRef.current?.el?.querySelector('iframe') as HTMLIFrameElement | null;\r\n if (!iframe?.contentWindow) return;\r\n iframe.contentWindow.postMessage(\r\n JSON.stringify({ event: 'command', func: shouldMute ? 'mute' : 'unMute', args: [] }),\r\n '*'\r\n );\r\n }}\r\n >\r\n <MediaProvider />\r\n {showPoster && isYoutubeVideo && youtubeThumbnail && (\r\n <Poster\r\n className=\"absolute inset-0 h-full w-full object-cover\"\r\n src={youtubeThumbnail}\r\n alt={typeof item === 'string' ? item : ''}\r\n />\r\n )}\r\n <DefaultVideoLayout\r\n icons={defaultLayoutIcons}\r\n translations={playerTranslations as never}\r\n noAudioGain\r\n slots={{ pipButton: null, googleCastButton: null }}\r\n />\r\n </MediaPlayer>\r\n </div>\r\n </div>\r\n ) : !showVideo && previewUrl ? (\r\n <div className=\"relative flex w-full h-full items-center justify-center overflow-hidden outline-[#E4E4E7] outline-2 outline-dashed -outline-offset-1 rounded-lg\">\r\n {!isWideImage && (\r\n <div\r\n className=\"absolute inset-0 scale-110 bg-cover bg-center opacity-80 blur-xl\"\r\n style={{ backgroundImage: `url(${previewUrl})` }}\r\n />\r\n )}\r\n {!disabled && (\r\n <div className=\"absolute top-2 right-2 z-20 cursor-pointer bg-white/70 rounded-[4px] p-1 shadow-sm\" onClick={onRemoveClick} >\r\n <X size={16} strokeWidth={2} color=\"black\" />\r\n </div>\r\n )}\r\n <img\r\n src={previewUrl}\r\n alt={fileName?.toString()}\r\n onLoad={(e) => {\r\n const { naturalWidth, naturalHeight } = e.currentTarget;\r\n setIsWideImage(\r\n !!naturalWidth && !!naturalHeight && naturalWidth > naturalHeight,\r\n );\r\n }}\r\n className={cn(\r\n 'relative h-full rounded-lg',\r\n isWideImage ? 'w-full object-cover' : 'z-10 max-w-full object-contain',\r\n )}\r\n />\r\n </div>\r\n ) : !showVideo ? (\r\n <div className=\"relative w-full h-full overflow-hidden outline-[#E4E4E7] outline-2 outline-dashed -outline-offset-1 rounded-lg\">\r\n {!disabled && (\r\n <div className=\"absolute top-2 right-2 cursor-pointer bg-white/70 rounded-[4px] p-1 shadow-sm\" onClick={onRemoveClick} >\r\n <X size={16} strokeWidth={2} color=\"black\" />\r\n </div>\r\n )}\r\n <div className=\"w-full h-full flex flex-col items-center justify-center text-gray-600\">\r\n <FileIcon size={28} />\r\n <span className=\"text-sm mt-2 break-all px-2 text-center\">\r\n {fileName?.toString()}\r\n </span>\r\n </div>\r\n </div>\r\n ) : null}\r\n\r\n {showVideo && !isYoutubeVideo && (\r\n <div\r\n className=\"mt-2 w-full h-auto min-h-14 rounded-[8px] border border-[#E8E9EB] bg-[#FCFCFC] p-2 flex items-center gap-4\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <div className=\"size-10 rounded-[8px] bg-[#9368FF1F] flex items-center justify-center shrink-0\">\r\n <Video className=\"size-6 text-[#06080D]\" />\r\n </div>\r\n\r\n <div className=\"flex flex-col items-start text-left gap-1 min-w-0 flex-1 justify-start\">\r\n <span className=\"w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate text-left\">\r\n {fileName?.toString()}\r\n </span>\r\n <span className=\"w-full text-[12px] font-medium leading-[120%] text-[#363B4E] text-left\">\r\n {fileSize}\r\n </span>\r\n </div>\r\n\r\n {!disabled && (\r\n <Button\r\n type=\"button\"\r\n color=\"secondary\"\r\n startAdornment={PencilIcon}\r\n size=\"md\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n onReplaceClick?.(event);\r\n }}\r\n >\r\n {labelReplace}\r\n </Button>\r\n )}\r\n\r\n {!disabled && (\r\n <ButtonIcon\r\n icon={Trash2}\r\n variant=\"outlined\"\r\n size=\"md\"\r\n color=\"secondary\"\r\n onClick={onRemoveClick}\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n"],"names":["YOUTUBE_PLAYER_STYLES","transformImageToSrc","preview","isYoutubeUrl","value","hostname","extractYoutubeId","url","searchId","pathParts","embedIndex","part","DropzoneSinglePickPreview","item","disabled","onRemoveClick","onReplaceClick","labelReplace","fileInfo","playerTranslations","previewUrl","setPreviewUrl","useState","isWideImage","setIsWideImage","isFileType","isFile","fileName","isYoutubeVideo","useMemo","isRemoteVideo","isVideoUrl","youtubeId","youtubeSource","youtubeThumbnail","youtubeStarted","setYoutubeStarted","showPoster","setShowPoster","mediaPlayerRef","useRef","lastMuteStateRef","useEffect","showImage","showVideo","fileSize","bytes","K","M","G","v","nextPreview","jsxs","jsx","event","MediaPlayer","detail","shouldMute","iframe","MediaProvider","Poster","DefaultVideoLayout","defaultLayoutIcons","X","e","naturalWidth","naturalHeight","cn","FileIcon","Video","Button","PencilIcon","ButtonIcon","Trash2"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneplatformdev/ui",
3
- "version": "0.1.99-beta.283",
3
+ "version": "0.1.99-beta.284",
4
4
  "description": "UI component library for OnePlatform",
5
5
  "author": "One Platform Development Team",
6
6
  "keywords": [
@@ -109,9 +109,9 @@
109
109
  "recharts": "^3.2.0",
110
110
  "sonner": "^2.0.7",
111
111
  "vaul": "^1.1.2",
112
- "@oneplatformdev/tokens": "^0.1.99-beta.283",
113
- "@oneplatformdev/hooks": "^0.1.99-beta.283",
114
- "@oneplatformdev/utils": "^0.1.99-beta.283"
112
+ "@oneplatformdev/tokens": "^0.1.99-beta.284",
113
+ "@oneplatformdev/hooks": "^0.1.99-beta.284",
114
+ "@oneplatformdev/utils": "^0.1.99-beta.284"
115
115
  },
116
116
  "scripts": {
117
117
  "chromatic": "chromatic"