@oneplatformdev/ui 0.1.99-beta.265 → 0.1.99-beta.267

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Wrappers.js","sources":["../../.storybook/Wrappers.tsx"],"sourcesContent":["import { PropsWithChildren } from \"react\";\r\n\r\nexport const MoreWrapper = (props: PropsWithChildren) => (\r\n <div\r\n style={{\r\n position: 'relative',\r\n padding: '24px 32px',\r\n display: 'flex',\r\n gap: '32px',\r\n }}\r\n >\r\n {props.children}\r\n </div>\r\n)\r\n\r\nexport const DashedWrapper = (props: PropsWithChildren) => {\r\n return (\r\n <div\r\n style={{\r\n padding: '0px 20px',\r\n display: 'flex',\r\n gap: '32px',\r\n alignItems: 'flex-start',\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n border: '2px dashed rgba(139, 92, 246, 0.7)',\r\n borderRadius: '24px',\r\n padding: '24px 32px',\r\n display: 'flex',\r\n gap: '32px',\r\n }}\r\n >\r\n {props.children}\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"names":["DashedWrapper","props","jsx"],"mappings":";AAeO,MAAMA,IAAgB,CAACC,MAE1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,KAAK;AAAA,MACL,YAAY;AAAA,IAAA;AAAA,IAGd,UAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,SAAS;AAAA,UACT,SAAS;AAAA,UACT,KAAK;AAAA,QAAA;AAAA,QAGN,UAAAD,EAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACT;AAAA;"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as t, jsxs as i } from "react/jsx-runtime";
2
2
  import { Button as o } from "./Button.js";
3
3
  import { FileDownIcon as m, Trash2Icon as u, PlusIcon as n } from "lucide-react";
4
- import { DashedWrapper as a } from "../packages/ui/.storybook/Wrappers.js";
4
+ import { DashedWrapper as a } from "../.storybook/Wrappers.js";
5
5
  const r = (e) => /* @__PURE__ */ t(
6
6
  "div",
7
7
  {
@@ -1,7 +1,7 @@
1
1
  import { jsx as o, jsxs as i } from "react/jsx-runtime";
2
2
  import { ButtonIcon as t } from "./ButtonIcon.js";
3
3
  import { MailIcon as p, FileDownIcon as c, Trash2Icon as l, PlusIcon as a, MessageCircleMoreIcon as B } from "lucide-react";
4
- import { DashedWrapper as s } from "../packages/ui/.storybook/Wrappers.js";
4
+ import { DashedWrapper as s } from "../.storybook/Wrappers.js";
5
5
  const h = (e) => /* @__PURE__ */ o(t, { ...e });
6
6
  h.args = {
7
7
  onClick: { action: (e) => e }
@@ -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;AAQ1B;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,QAAQ,2GAuapB,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;AAwC1B;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,QAAQ,2GAuapB,CAAC"}
@@ -1,121 +1,140 @@
1
- import { jsxs as l, jsx as e, Fragment as P } from "react/jsx-runtime";
2
- import { X as E, UploadIcon as ge, FileTextIcon as X, InfoIcon as we } from "lucide-react";
3
- import { forwardRef as Ne, useState as Y, useEffect as ve, useImperativeHandle as Fe } from "react";
1
+ import { jsxs as l, jsx as e, Fragment as Y } from "react/jsx-runtime";
2
+ import { X as B, UploadIcon as ge, FileTextIcon as G, InfoIcon as we } from "lucide-react";
3
+ import { forwardRef as Ne, useState as J, useEffect as ve, useImperativeHandle as Fe } from "react";
4
4
  import { useDropzone as be } from "react-dropzone";
5
- import { cn as a } from "@oneplatformdev/utils";
6
- import { Card as Ce } from "../Card/Card.js";
7
- import { DEFAULT_FILE_TYPES as ye } from "./Dropzone.types.js";
5
+ import { cn as m } from "@oneplatformdev/utils";
6
+ import { Card as ye } from "../Card/Card.js";
7
+ import { DEFAULT_FILE_TYPES as Ce } from "./Dropzone.types.js";
8
8
  import { FilePreview as ze } from "./DropzoneFilePreview.js";
9
9
  import { DropzoneSinglePickPreview as Ee } from "./DropzoneSinglePickPreview.js";
10
- import { isFile as D, extractName as De } from "./DropzoneUtils.js";
10
+ import { isFile as v, extractName as De } from "./DropzoneUtils.js";
11
11
  import { Button as Ie } from "../Button/Button.js";
12
- const q = (w = 0) => `${(w / (1024 * 1024)).toFixed(0)} MB`, ke = Ne(
12
+ const K = (f = 0) => `${(f / (1024 * 1024)).toFixed(0)} MB`, Me = (f, u) => {
13
+ if (f === u) return !0;
14
+ if (f.length !== u.length) return !1;
15
+ for (let p = 0; p < f.length; p++) {
16
+ const o = f[p], c = u[p];
17
+ if (o !== c) {
18
+ if (typeof o == "string" && typeof c == "string") {
19
+ if (o !== c) return !1;
20
+ continue;
21
+ }
22
+ if (v(o) && v(c)) {
23
+ if (o.name !== c.name || o.size !== c.size || o.type !== c.type || o.lastModified !== c.lastModified)
24
+ return !1;
25
+ continue;
26
+ }
27
+ return !1;
28
+ }
29
+ }
30
+ return !0;
31
+ }, ke = Ne(
13
32
  ({
14
- acceptTypes: w = ye,
15
- maxSizeMB: G,
16
- maxFiles: I = 1,
17
- onErrors: J,
18
- hideErrors: K = !1,
19
- disabled: o = !1,
20
- classNames: p,
21
- value: h,
22
- onChangeValue: k,
33
+ acceptTypes: f = Ce,
34
+ maxSizeMB: u,
35
+ maxFiles: p = 1,
36
+ onErrors: o,
37
+ hideErrors: c = !1,
38
+ disabled: a = !1,
39
+ classNames: F,
40
+ value: g,
41
+ onChangeValue: S,
23
42
  className: Q,
24
- labelDropzonePrompt: N = "Drop files here or click to select",
43
+ labelDropzonePrompt: C = "Drop files here or click to select",
25
44
  labelDropzoneSubPrompt: Z = "",
26
45
  labelOrClickToSelect: U = "Upload file",
27
46
  labelSelectedFiles: V = "Selected Files",
28
47
  labelUploadErrors: ee = "Upload Errors",
29
- labelFileTooLarge: B = "File is too large",
30
- labelInvalidFileType: M = "Invalid file type",
48
+ labelFileTooLarge: j = "File is too large",
49
+ labelInvalidFileType: A = "Invalid file type",
31
50
  labelVideoUploaded: te = "Uploaded",
32
51
  labelVideoReplace: le = "Replace",
33
- singlePick: s = !1,
52
+ singlePick: n = !1,
34
53
  labelDropzoneClassname: ie,
35
54
  labelDropzoneSubClassname: re,
36
- isUploading: c = !1,
37
- uploadProgress: S = 0,
38
- uploadLoadedBytes: se = 0,
39
- uploadTotalBytes: ne = 0,
40
- onCancelUpload: j,
55
+ isUploading: d = !1,
56
+ uploadProgress: R = 0,
57
+ uploadLoadedBytes: ne = 0,
58
+ uploadTotalBytes: se = 0,
59
+ onCancelUpload: W,
41
60
  labelUploadingTitle: oe = "Uploading video...",
42
61
  labelUploadingHint: ce = "Please do not close this page",
43
62
  labelUploadingActionCancel: ae = "Cancel",
44
- persistentDropzone: A = !1,
45
- previewVariant: f = "default",
46
- ...v
63
+ persistentDropzone: $ = !1,
64
+ previewVariant: w = "default",
65
+ ...z
47
66
  }, de) => {
48
- const [i, u] = Y(h ?? []), [d, R] = Y([]), g = i[0], W = d[0]?.file, F = s && i.length > 0 && D(g), me = F && g.type.includes("image"), $ = F && g.type.includes("video"), _ = F && !me && !$, T = s && !i.length && !!W, m = _ ? g : W, b = s && $, fe = b, C = s && i.length > 0, xe = (t, n) => {
49
- R(n), J?.(n);
50
- const r = s ? t.slice(0, 1) : [...i, ...t].slice(0, I);
51
- u(r), k?.(r);
67
+ const [i, b] = J(g ?? []), [x, _] = J([]), y = i[0], T = x[0]?.file, E = n && i.length > 0 && v(y), me = E && y.type.includes("image"), q = E && y.type.includes("video"), H = E && !me && !q, L = n && !i.length && !!T, h = H ? y : T, D = n && q, fe = D, I = n && i.length > 0, pe = (t, s) => {
68
+ _(s), o?.(s);
69
+ const r = n ? t.slice(0, 1) : [...i, ...t].slice(0, p);
70
+ b(r), S?.(r);
52
71
  };
53
72
  ve(() => {
54
- h && u(h);
55
- }, [h]);
56
- const y = (t, n) => {
57
- if (o) return;
73
+ g && !Me(i, g) && b(g);
74
+ }, [i, g]);
75
+ const M = (t, s) => {
76
+ if (a) return;
58
77
  t.stopPropagation();
59
- const r = i.filter((x, z) => z !== n);
60
- u(r), k?.(r);
61
- }, { getRootProps: pe, getInputProps: he, isDragActive: ue, open: H } = be({
62
- onDrop: xe,
63
- accept: w.reduce((t, n) => (t[n] = [], t), {}),
64
- maxSize: G * 1024 * 1024,
65
- maxFiles: s ? 1 : I,
66
- disabled: o || c,
78
+ const r = i.filter((N, k) => k !== s);
79
+ b(r), S?.(r);
80
+ }, { getRootProps: xe, getInputProps: he, isDragActive: ue, open: O } = be({
81
+ onDrop: pe,
82
+ accept: f.reduce((t, s) => (t[s] = [], t), {}),
83
+ maxSize: u * 1024 * 1024,
84
+ maxFiles: n ? 1 : p,
85
+ disabled: a || d,
67
86
  noClick: !0
68
87
  });
69
88
  Fe(de, () => ({
70
- setItems: u
89
+ setItems: b
71
90
  }), []);
72
- const L = !c && !s && A && i.length > 0, O = !c && !s && i.length > 0 && /* @__PURE__ */ l("div", { className: a("w-full mt-2", p?.previewWrapper), children: [
73
- f === "default" && /* @__PURE__ */ l("pre", { className: "font-semibold text-gray-600", children: [
91
+ const P = !d && !n && $ && i.length > 0, X = !d && !n && i.length > 0 && /* @__PURE__ */ l("div", { className: m("w-full mt-2", F?.previewWrapper), children: [
92
+ w === "default" && /* @__PURE__ */ l("pre", { className: "font-semibold text-gray-600", children: [
74
93
  V,
75
94
  ":"
76
95
  ] }),
77
96
  /* @__PURE__ */ e(
78
97
  "ul",
79
98
  {
80
- className: a(
99
+ className: m(
81
100
  "mt-2 text-sm text-gray-500 flex flex-wrap items-start",
82
- f === "image-grid" ? "gap-2 justify-start" : "gap-4 justify-center"
101
+ w === "image-grid" ? "gap-2 justify-start" : "gap-4 justify-center"
83
102
  ),
84
- children: i.map((t, n) => {
85
- const r = D(t) ? t.name : De(t), x = D(t) ? (t.size / (1024 * 1024)).toFixed(2) + " MB" : "";
103
+ children: i.map((t, s) => {
104
+ const r = v(t) ? t.name : De(t), N = v(t) ? (t.size / (1024 * 1024)).toFixed(2) + " MB" : "";
86
105
  return /* @__PURE__ */ l(
87
106
  "li",
88
107
  {
89
- className: a(
108
+ className: m(
90
109
  "relative",
91
- f === "image-grid" ? "w-[75px] h-[75px]" : "flex flex-col items-center gap-2"
110
+ w === "image-grid" ? "w-[75px] h-[75px]" : "flex flex-col items-center gap-2"
92
111
  ),
93
112
  children: [
94
113
  /* @__PURE__ */ l("div", { className: "relative w-full h-full", children: [
95
- /* @__PURE__ */ e(ze, { item: t, styles: p }),
114
+ /* @__PURE__ */ e(ze, { item: t, styles: F }),
96
115
  /* @__PURE__ */ e(
97
116
  "div",
98
117
  {
99
- className: a(
118
+ className: m(
100
119
  "absolute top-0 right-0 cursor-pointer bg-gray-300 rounded-sm",
101
- f === "image-grid" && "top-1 right-1 bg-white/90 rounded-full p-0.5"
120
+ w === "image-grid" && "top-1 right-1 bg-white/90 rounded-full p-0.5"
102
121
  ),
103
- onClick: (z) => y(z, n),
104
- children: /* @__PURE__ */ e(E, { size: 16, strokeWidth: 1, color: "black" })
122
+ onClick: (k) => M(k, s),
123
+ children: /* @__PURE__ */ e(B, { size: 16, strokeWidth: 1, color: "black" })
105
124
  }
106
125
  )
107
126
  ] }),
108
- f === "default" && /* @__PURE__ */ l("span", { className: "inline-flex flex-col items-center", children: [
127
+ w === "default" && /* @__PURE__ */ l("span", { className: "inline-flex flex-col items-center", children: [
109
128
  /* @__PURE__ */ e("span", { className: "max-w-[80px] text-ellipsis overflow-hidden whitespace-nowrap", children: r }),
110
- x && /* @__PURE__ */ l("span", { children: [
129
+ N && /* @__PURE__ */ l("span", { children: [
111
130
  "(",
112
- x,
131
+ N,
113
132
  ")"
114
133
  ] })
115
134
  ] })
116
135
  ]
117
136
  },
118
- n
137
+ s
119
138
  );
120
139
  })
121
140
  }
@@ -123,35 +142,35 @@ const q = (w = 0) => `${(w / (1024 * 1024)).toFixed(0)} MB`, ke = Ne(
123
142
  ] });
124
143
  return /* @__PURE__ */ l("div", { className: "w-full", children: [
125
144
  /* @__PURE__ */ l(
126
- Ce,
145
+ ye,
127
146
  {
128
- ...v,
129
- ...pe({
147
+ ...z,
148
+ ...xe({
130
149
  onClick: (t) => {
131
- if (!(o || c)) {
150
+ if (!(a || d)) {
132
151
  if (fe) {
133
- v.onClick?.(t);
152
+ z.onClick?.(t);
134
153
  return;
135
154
  }
136
- H(), v.onClick?.(t);
155
+ O(), z.onClick?.(t);
137
156
  }
138
157
  }
139
158
  }),
140
- className: a(
159
+ className: m(
141
160
  "w-full text-center flex flex-col items-center justify-center gap-6 cursor-pointer",
142
- !C && "border border-dashed border-[#9368FF80] rounded-[8px] bg-[#FCFCFC] p-4",
143
- C && "min-h-0 border-0 bg-transparent p-0",
144
- o && "border-[#E4E4E7] pointer-events-none",
145
- d.length > 0 && !C && "border-red-500",
161
+ !I && "border border-dashed border-[#9368FF80] rounded-[8px] bg-[#FCFCFC] p-4",
162
+ I && "min-h-0 border-0 bg-transparent p-0",
163
+ a && "border-[#E4E4E7] pointer-events-none",
164
+ x.length > 0 && !I && "border-red-500",
146
165
  ue && "bg-gray-100",
147
- s && "shadow-none!",
148
- s && i.length > 0 && !b && "p-0! shadow-none!",
149
- b && "h-auto! max-h-none! min-h-0! p-2!",
166
+ n && "shadow-none!",
167
+ n && i.length > 0 && !D && "p-0! shadow-none!",
168
+ D && "h-auto! max-h-none! min-h-0! p-2!",
150
169
  Q
151
170
  ),
152
171
  children: [
153
172
  /* @__PURE__ */ e("input", { ...he() }),
154
- c && /* @__PURE__ */ l(
173
+ d && /* @__PURE__ */ l(
155
174
  "div",
156
175
  {
157
176
  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",
@@ -160,16 +179,16 @@ const q = (w = 0) => `${(w / (1024 * 1024)).toFixed(0)} MB`, ke = Ne(
160
179
  /* @__PURE__ */ l("div", { className: "relative h-24 w-24", children: [
161
180
  /* @__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" }) }),
162
181
  /* @__PURE__ */ l("span", { className: "absolute inset-0 flex items-center justify-center text-lg font-semibold text-foreground", children: [
163
- Math.max(0, Math.min(100, Math.round(S))),
182
+ Math.max(0, Math.min(100, Math.round(R))),
164
183
  "%"
165
184
  ] })
166
185
  ] }),
167
186
  /* @__PURE__ */ l("div", { className: "text-center", children: [
168
187
  /* @__PURE__ */ e("p", { className: "text-xl font-semibold text-foreground", children: oe }),
169
188
  /* @__PURE__ */ l("p", { className: "text-sm text-[#666A78]", children: [
170
- q(se),
189
+ K(ne),
171
190
  " of ",
172
- q(ne)
191
+ K(se)
173
192
  ] }),
174
193
  /* @__PURE__ */ e("p", { className: "mt-2 text-sm text-[#666A78]", children: ce })
175
194
  ] }),
@@ -177,16 +196,16 @@ const q = (w = 0) => `${(w / (1024 * 1024)).toFixed(0)} MB`, ke = Ne(
177
196
  "div",
178
197
  {
179
198
  className: "h-full bg-[#9368FF] transition-[width] duration-150 ease-linear",
180
- style: { width: `${Math.max(0, Math.min(100, S))}%` }
199
+ style: { width: `${Math.max(0, Math.min(100, R))}%` }
181
200
  }
182
201
  ) }),
183
- j && /* @__PURE__ */ e(
202
+ W && /* @__PURE__ */ e(
184
203
  "button",
185
204
  {
186
205
  type: "button",
187
206
  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",
188
207
  onClick: (t) => {
189
- t.stopPropagation(), j();
208
+ t.stopPropagation(), W();
190
209
  },
191
210
  children: ae
192
211
  }
@@ -194,30 +213,30 @@ const q = (w = 0) => `${(w / (1024 * 1024)).toFixed(0)} MB`, ke = Ne(
194
213
  ]
195
214
  }
196
215
  ),
197
- !c && (i.length === 0 || !s && A) && d.length === 0 && /* @__PURE__ */ l(
216
+ !d && (i.length === 0 || !n && $) && x.length === 0 && /* @__PURE__ */ l(
198
217
  "div",
199
218
  {
200
- className: a(
219
+ className: m(
201
220
  "flex flex-col items-center gap-2 w-full",
202
- p?.idleWrapper
221
+ F?.idleWrapper
203
222
  ),
204
223
  children: [
205
224
  /* @__PURE__ */ e("div", { className: "flex size-12 items-center justify-center rounded-full bg-[#9368FF1F]", children: /* @__PURE__ */ e(ge, { className: "size-6 text-[#9368FF]" }) }),
206
- /* @__PURE__ */ e("div", { className: "flex flex-col items-center gap-1 w-full", children: !o && /* @__PURE__ */ l(P, { children: [
225
+ /* @__PURE__ */ e("div", { className: "flex flex-col items-center gap-1 w-full", children: !a && /* @__PURE__ */ l(Y, { children: [
207
226
  /* @__PURE__ */ e(
208
227
  "span",
209
228
  {
210
- className: a(
229
+ className: m(
211
230
  "font-semibold text-[14px] leading-[125%] text-[#06080D] text-center w-full",
212
231
  ie
213
232
  ),
214
- children: N
233
+ children: C
215
234
  }
216
235
  ),
217
236
  /* @__PURE__ */ e(
218
237
  "span",
219
238
  {
220
- className: a(
239
+ className: m(
221
240
  "font-medium text-[12px] leading-[120%] text-[#666A78] text-center w-full",
222
241
  re
223
242
  ),
@@ -225,7 +244,7 @@ const q = (w = 0) => `${(w / (1024 * 1024)).toFixed(0)} MB`, ke = Ne(
225
244
  }
226
245
  )
227
246
  ] }) }),
228
- !o && /* @__PURE__ */ e(
247
+ !a && /* @__PURE__ */ e(
229
248
  Ie,
230
249
  {
231
250
  type: "button",
@@ -236,42 +255,42 @@ const q = (w = 0) => `${(w / (1024 * 1024)).toFixed(0)} MB`, ke = Ne(
236
255
  ]
237
256
  }
238
257
  ),
239
- !c && d.length > 0 && !T && /* @__PURE__ */ l("div", { className: a("w-full mt-4", p?.errorWrapper), children: [
258
+ !d && x.length > 0 && !L && /* @__PURE__ */ l("div", { className: m("w-full mt-4", F?.errorWrapper), children: [
240
259
  /* @__PURE__ */ l("span", { className: "font-semibold text-red-500", children: [
241
260
  ee,
242
261
  ":"
243
262
  ] }),
244
- /* @__PURE__ */ e("ul", { className: "mt-2 text-sm text-red-500 list-disc list-inside", children: d.map((t, n) => /* @__PURE__ */ l("li", { children: [
263
+ /* @__PURE__ */ e("ul", { className: "mt-2 text-sm text-red-500 list-disc list-inside", children: x.map((t, s) => /* @__PURE__ */ l("li", { children: [
245
264
  t.file.name,
246
265
  " (",
247
266
  (t.file.size / (1024 * 1024)).toFixed(2),
248
267
  " MB)",
249
- !K && /* @__PURE__ */ e("ul", { className: "ml-4 list-disc list-inside", children: t.errors.map((r, x) => /* @__PURE__ */ l("li", { children: [
250
- r.code === "file-too-large" && B,
251
- r.code === "file-invalid-type" && M,
268
+ !c && /* @__PURE__ */ e("ul", { className: "ml-4 list-disc list-inside", children: t.errors.map((r, N) => /* @__PURE__ */ l("li", { children: [
269
+ r.code === "file-too-large" && j,
270
+ r.code === "file-invalid-type" && A,
252
271
  r.code !== "file-too-large" && r.code !== "file-invalid-type" && r.message
253
- ] }, x)) })
254
- ] }, n)) })
272
+ ] }, N)) })
273
+ ] }, s)) })
255
274
  ] }),
256
- !c && !!(s && i.length) && /* @__PURE__ */ e(P, { children: _ ? /* @__PURE__ */ l(
275
+ !d && !!(n && i.length) && /* @__PURE__ */ e(Y, { children: H ? /* @__PURE__ */ l(
257
276
  "div",
258
277
  {
259
278
  className: "w-full max-w-[502px] flex flex-col items-center gap-4",
260
279
  onClick: (t) => t.stopPropagation(),
261
280
  children: [
262
- /* @__PURE__ */ e("p", { className: "w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]", children: N }),
281
+ /* @__PURE__ */ e("p", { className: "w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]", children: C }),
263
282
  /* @__PURE__ */ l("div", { className: "w-full min-h-[72px] rounded-[8px] bg-[#F5F5F5] p-4 flex items-center gap-4", children: [
264
- /* @__PURE__ */ e("div", { className: "size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0", children: /* @__PURE__ */ e(X, { size: 20 }) }),
283
+ /* @__PURE__ */ e("div", { className: "size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0", children: /* @__PURE__ */ e(G, { size: 20 }) }),
265
284
  /* @__PURE__ */ l("div", { className: "flex flex-col items-start text-left gap-1 min-w-0 flex-1", children: [
266
- /* @__PURE__ */ e("span", { className: "w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate", children: m?.name }),
267
- /* @__PURE__ */ e("span", { className: "w-full text-[12px] font-medium leading-[120%] text-[#666A78]", children: m ? `${(m.size / (1024 * 1024)).toFixed(0)} MB` : "" })
285
+ /* @__PURE__ */ e("span", { className: "w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate", children: h?.name }),
286
+ /* @__PURE__ */ e("span", { className: "w-full text-[12px] font-medium leading-[120%] text-[#666A78]", children: h ? `${(h.size / (1024 * 1024)).toFixed(0)} MB` : "" })
268
287
  ] }),
269
- !o && /* @__PURE__ */ e(
288
+ !a && /* @__PURE__ */ e(
270
289
  "div",
271
290
  {
272
291
  className: "size-6 flex items-center justify-center cursor-pointer",
273
- onClick: (t) => y(t, 0),
274
- children: /* @__PURE__ */ e(E, { size: 24, color: "#06080D" })
292
+ onClick: (t) => M(t, 0),
293
+ children: /* @__PURE__ */ e(B, { size: 24, color: "#06080D" })
275
294
  }
276
295
  )
277
296
  ] })
@@ -281,51 +300,51 @@ const q = (w = 0) => `${(w / (1024 * 1024)).toFixed(0)} MB`, ke = Ne(
281
300
  Ee,
282
301
  {
283
302
  item: i[0],
284
- onRemoveClick: (t) => y(t, 0),
303
+ onRemoveClick: (t) => M(t, 0),
285
304
  onReplaceClick: (t) => {
286
- t.stopPropagation(), !o && H();
305
+ t.stopPropagation(), !a && O();
287
306
  },
288
307
  labelUploaded: te,
289
308
  labelReplace: le,
290
- disabled: o
309
+ disabled: a
291
310
  }
292
311
  ) }),
293
- !c && T && /* @__PURE__ */ l(
312
+ !d && L && /* @__PURE__ */ l(
294
313
  "div",
295
314
  {
296
315
  className: "w-full max-w-[502px] flex flex-col items-center gap-4",
297
316
  onClick: (t) => t.stopPropagation(),
298
317
  children: [
299
- /* @__PURE__ */ e("p", { className: "w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]", children: N }),
318
+ /* @__PURE__ */ e("p", { className: "w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]", children: C }),
300
319
  /* @__PURE__ */ l("div", { className: "w-full min-h-[72px] rounded-[8px] bg-[#F5F5F5] p-4 flex items-center gap-4", children: [
301
- /* @__PURE__ */ e("div", { className: "size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0", children: /* @__PURE__ */ e(X, { size: 20 }) }),
320
+ /* @__PURE__ */ e("div", { className: "size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0", children: /* @__PURE__ */ e(G, { size: 20 }) }),
302
321
  /* @__PURE__ */ l("div", { className: "flex flex-col items-start text-left gap-1 min-w-0 flex-1", children: [
303
- /* @__PURE__ */ e("span", { className: "w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate", children: m?.name }),
304
- /* @__PURE__ */ e("span", { className: "w-full text-[12px] font-medium leading-[120%] text-[#666A78]", children: m ? `${(m.size / (1024 * 1024)).toFixed(0)} MB` : "" })
322
+ /* @__PURE__ */ e("span", { className: "w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate", children: h?.name }),
323
+ /* @__PURE__ */ e("span", { className: "w-full text-[12px] font-medium leading-[120%] text-[#666A78]", children: h ? `${(h.size / (1024 * 1024)).toFixed(0)} MB` : "" })
305
324
  ] }),
306
- !o && /* @__PURE__ */ e(
325
+ !a && /* @__PURE__ */ e(
307
326
  "div",
308
327
  {
309
328
  className: "size-6 flex items-center justify-center cursor-pointer",
310
329
  onClick: (t) => {
311
- t.stopPropagation(), R([]);
330
+ t.stopPropagation(), _([]);
312
331
  },
313
- children: /* @__PURE__ */ e(E, { size: 24, color: "#06080D" })
332
+ children: /* @__PURE__ */ e(B, { size: 24, color: "#06080D" })
314
333
  }
315
334
  )
316
335
  ] }),
317
336
  /* @__PURE__ */ l("div", { className: "w-full bg-[#DC26260F] p-4 flex items-start gap-4", children: [
318
337
  /* @__PURE__ */ e(we, { size: 20, color: "#DC2626" }),
319
- /* @__PURE__ */ e("p", { className: "text-[12px] leading-[120%] font-medium text-[#DC2626] text-left", children: d[0]?.errors?.[0]?.code === "file-too-large" ? B : d[0]?.errors?.[0]?.message || M })
338
+ /* @__PURE__ */ e("p", { className: "text-[12px] leading-[120%] font-medium text-[#DC2626] text-left", children: x[0]?.errors?.[0]?.code === "file-too-large" ? j : x[0]?.errors?.[0]?.message || A })
320
339
  ] })
321
340
  ]
322
341
  }
323
342
  ),
324
- !L && O
343
+ !P && X
325
344
  ]
326
345
  }
327
346
  ),
328
- L && /* @__PURE__ */ e("div", { className: "w-full", children: O })
347
+ P && /* @__PURE__ */ e("div", { className: "w-full", children: X })
329
348
  ] });
330
349
  }
331
350
  );
@@ -1 +1 @@
1
- {"version":3,"file":"Dropzone.js","sources":["../../src/Dropzone/Dropzone.tsx"],"sourcesContent":["import { FileTextIcon, InfoIcon, 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 } from './DropzoneUtils';\r\nimport { Button } from \"../Button\";\r\n\r\nconst formatBytesToMb = (bytes = 0) => `${(bytes / (1024 * 1024)).toFixed(0)} MB`;\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 persistentDropzone = false,\r\n previewVariant = 'default',\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 isSingleFile = singlePick && items.length > 0 && isFile(firstItem);\r\n const isSingleImage = isSingleFile && firstItem.type.includes('image');\r\n const isSingleVideo =\r\n isSingleFile &&\r\n firstItem.type.includes('video');\r\n const isSingleDocument = isSingleFile && !isSingleImage && !isSingleVideo;\r\n const hasRejectedSingleFile = singlePick && !items.length && Boolean(firstRejectedFile);\r\n const singleFileCard = isSingleDocument ? firstItem : firstRejectedFile;\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) {\r\n setItems(value);\r\n }\r\n }, [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 shouldRenderDetachedPreview =\r\n !isUploading && !singlePick && persistentDropzone && items.length > 0;\r\n\r\n const previewBlock = !isUploading && !singlePick && items.length > 0 && (\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 {items.map((item, index) => {\r\n const fileName = isFile(item) ? item.name : extractName(item);\r\n const fileSize = isFile(item)\r\n ? (item.size / (1024 * 1024)).toFixed(2) + ' MB'\r\n : '';\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 </ul>\r\n </div>\r\n );\r\n\r\n return (\r\n <div className=\"w-full\">\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 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 {formatBytesToMb(uploadLoadedBytes)} of {formatBytesToMb(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 &&\r\n (items.length === 0 || (!singlePick && persistentDropzone)) &&\r\n fileErrors.length === 0 && (\r\n <div\r\n className={cn(\r\n 'flex flex-col items-center gap-2 w-full',\r\n classNames?.idleWrapper\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\",\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\",\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 && fileErrors.length > 0 && !hasRejectedSingleFile && (\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 {(fileRejection.file.size / (1024 * 1024)).toFixed(2)} MB)\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 <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 <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) => 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 disabled={disabled}\r\n />\r\n )}\r\n </>\r\n )}\r\n\r\n {!isUploading && hasRejectedSingleFile && (\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 <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 <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 </div>\r\n );\r\n }\r\n);\r\n\r\nDropzone.displayName = 'Dropzone';\r\n\r\n"],"names":["formatBytesToMb","bytes","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","persistentDropzone","previewVariant","restProps","ref","items","setItems","useState","fileErrors","setFileErrors","firstItem","firstRejectedFile","isSingleFile","isFile","isSingleImage","isSingleVideo","isSingleDocument","hasRejectedSingleFile","singleFileCard","hasSingleVideoPreview","shouldBlockRootOpen","isContentPreviewMode","onDrop","acceptedFiles","fileRejections","newItems","useEffect","removeItem","event","index","_","i","getRootProps","getInputProps","isDragActive","open","useDropzone","acc","fileType","useImperativeHandle","shouldRenderDetachedPreview","previewBlock","jsxs","cn","jsx","item","fileName","extractName","fileSize","FilePreview","X","Card","UploadIcon","Fragment","Button","fileRejection","error","errorIndex","FileTextIcon","DropzoneSinglePickPreview","e","InfoIcon"],"mappings":"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"}
1
+ {"version":3,"file":"Dropzone.js","sources":["../../src/Dropzone/Dropzone.tsx"],"sourcesContent":["import { FileTextIcon, InfoIcon, 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 } from './DropzoneUtils';\r\nimport { Button } from \"../Button\";\n\nconst formatBytesToMb = (bytes = 0) => `${(bytes / (1024 * 1024)).toFixed(0)} MB`;\nconst areItemsEqual = (a: DropzoneValueItem[], b: DropzoneValueItem[]) => {\n if (a === b) return true;\n if (a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; i++) {\n const left = a[i];\n const right = b[i];\n\n if (left === right) continue;\n\n if (typeof left === 'string' && typeof right === 'string') {\n if (left !== right) return false;\n continue;\n }\n\n if (isFile(left) && isFile(right)) {\n if (\n left.name !== right.name ||\n left.size !== right.size ||\n left.type !== right.type ||\n left.lastModified !== right.lastModified\n ) {\n return false;\n }\n continue;\n }\n\n return false;\n }\n\n return true;\n};\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 persistentDropzone = false,\r\n previewVariant = 'default',\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 isSingleFile = singlePick && items.length > 0 && isFile(firstItem);\r\n const isSingleImage = isSingleFile && firstItem.type.includes('image');\r\n const isSingleVideo =\r\n isSingleFile &&\r\n firstItem.type.includes('video');\r\n const isSingleDocument = isSingleFile && !isSingleImage && !isSingleVideo;\r\n const hasRejectedSingleFile = singlePick && !items.length && Boolean(firstRejectedFile);\r\n const singleFileCard = isSingleDocument ? firstItem : firstRejectedFile;\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(() => {\n if (value && !areItemsEqual(items, value)) {\n setItems(value);\n }\n }, [items, value]);\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 shouldRenderDetachedPreview =\r\n !isUploading && !singlePick && persistentDropzone && items.length > 0;\r\n\r\n const previewBlock = !isUploading && !singlePick && items.length > 0 && (\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 {items.map((item, index) => {\r\n const fileName = isFile(item) ? item.name : extractName(item);\r\n const fileSize = isFile(item)\r\n ? (item.size / (1024 * 1024)).toFixed(2) + ' MB'\r\n : '';\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 </ul>\r\n </div>\r\n );\r\n\r\n return (\r\n <div className=\"w-full\">\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 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 {formatBytesToMb(uploadLoadedBytes)} of {formatBytesToMb(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 &&\r\n (items.length === 0 || (!singlePick && persistentDropzone)) &&\r\n fileErrors.length === 0 && (\r\n <div\r\n className={cn(\r\n 'flex flex-col items-center gap-2 w-full',\r\n classNames?.idleWrapper\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\",\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\",\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 && fileErrors.length > 0 && !hasRejectedSingleFile && (\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 {(fileRejection.file.size / (1024 * 1024)).toFixed(2)} MB)\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 <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 <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) => 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 disabled={disabled}\r\n />\r\n )}\r\n </>\r\n )}\r\n\r\n {!isUploading && hasRejectedSingleFile && (\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 <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 <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 </div>\r\n );\r\n }\r\n);\r\n\r\nDropzone.displayName = 'Dropzone';\r\n\r\n"],"names":["formatBytesToMb","bytes","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","persistentDropzone","previewVariant","restProps","ref","items","setItems","useState","fileErrors","setFileErrors","firstItem","firstRejectedFile","isSingleFile","isSingleImage","isSingleVideo","isSingleDocument","hasRejectedSingleFile","singleFileCard","hasSingleVideoPreview","shouldBlockRootOpen","isContentPreviewMode","onDrop","acceptedFiles","fileRejections","newItems","useEffect","removeItem","event","index","_","getRootProps","getInputProps","isDragActive","open","useDropzone","acc","fileType","useImperativeHandle","shouldRenderDetachedPreview","previewBlock","jsxs","cn","jsx","item","fileName","extractName","fileSize","FilePreview","X","Card","UploadIcon","Fragment","Button","fileRejection","error","errorIndex","FileTextIcon","DropzoneSinglePickPreview","e","InfoIcon"],"mappings":"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"}
@@ -4,14 +4,13 @@ import { File as m } from "lucide-react";
4
4
  import { DEFAULT_IMAGES_TYPES as w } from "./Dropzone.types.js";
5
5
  import { isFile as a } from "./DropzoneUtils.js";
6
6
  import { cn as i } from "@oneplatformdev/utils";
7
- import { MediaPlayer as x, MediaProvider as v } from "../node_modules/.pnpm/@vidstack_react@1.12.13_@types_react@19.1.13_react@19.1.1/node_modules/@vidstack/react/prod/vidstack.js";
8
- /* empty css */
9
- /* empty css */
10
- /* empty css */
11
- import { DefaultVideoLayout as h } from "../node_modules/.pnpm/@vidstack_react@1.12.13_@types_react@19.1.13_react@19.1.1/node_modules/@vidstack/react/prod/chunks/vidstack-D27o2o-g.js";
12
- import { defaultLayoutIcons as y } from "../node_modules/.pnpm/@vidstack_react@1.12.13_@types_react@19.1.13_react@19.1.1/node_modules/@vidstack/react/prod/player/vidstack-default-icons.js";
13
- const T = ({ item: e, styles: s }) => {
14
- const [t, o] = p(null), d = a(e) && w.includes(e.type), c = a(e) && e.type.includes("video");
7
+ import { MediaPlayer as x, MediaProvider as v } from "@vidstack/react";
8
+ import { DefaultVideoLayout as h, defaultLayoutIcons as y } from "@vidstack/react/player/layouts/default";
9
+ import "@vidstack/react/player/styles/base.css";
10
+ import "@vidstack/react/player/styles/default/theme.css";
11
+ import "@vidstack/react/player/styles/default/layouts/video.css";
12
+ const E = ({ item: e, styles: t }) => {
13
+ const [s, o] = p(null), d = a(e) && w.includes(e.type), c = a(e) && e.type.includes("video");
15
14
  return f(() => {
16
15
  let r = null;
17
16
  if (a(e) && d) {
@@ -34,12 +33,12 @@ const T = ({ item: e, styles: s }) => {
34
33
  {
35
34
  className: i(
36
35
  "w-32 h-32 border border-gray-300 rounded-md overflow-hidden flex items-center justify-center",
37
- s?.previewWraper
36
+ t?.previewWraper
38
37
  ),
39
- children: t && c ? /* @__PURE__ */ l("div", { className: "w-full h-full bg-black", onClick: (r) => r.stopPropagation(), children: /* @__PURE__ */ u(
38
+ children: s && c ? /* @__PURE__ */ l("div", { className: "w-full h-full bg-black", onClick: (r) => r.stopPropagation(), children: /* @__PURE__ */ u(
40
39
  x,
41
40
  {
42
- src: a(e) ? { src: t, type: e.type } : t,
41
+ src: a(e) ? { src: s, type: e.type } : s,
43
42
  className: "h-full w-full bg-black text-white",
44
43
  playsInline: !0,
45
44
  children: [
@@ -47,19 +46,19 @@ const T = ({ item: e, styles: s }) => {
47
46
  /* @__PURE__ */ l(h, { icons: y })
48
47
  ]
49
48
  }
50
- ) }) : t ? /* @__PURE__ */ l(
49
+ ) }) : s ? /* @__PURE__ */ l(
51
50
  "img",
52
51
  {
53
- src: t,
52
+ src: s,
54
53
  alt: a(e) ? e.name : "external-image",
55
- className: i("w-full h-full object-cover", s?.previewImage)
54
+ className: i("w-full h-full object-cover", t?.previewImage)
56
55
  }
57
56
  ) : /* @__PURE__ */ u(
58
57
  "div",
59
58
  {
60
59
  className: i(
61
60
  "flex flex-col items-center justify-center text-gray-500 text-sm p-2 text-center",
62
- s?.previewFile
61
+ t?.previewFile
63
62
  ),
64
63
  children: [
65
64
  /* @__PURE__ */ l(m, { className: "w-6 h-6" }),
@@ -71,6 +70,6 @@ const T = ({ item: e, styles: s }) => {
71
70
  );
72
71
  };
73
72
  export {
74
- T as FilePreview
73
+ E as FilePreview
75
74
  };
76
75
  //# sourceMappingURL=DropzoneFilePreview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropzoneFilePreview.js","sources":["../../src/Dropzone/DropzoneFilePreview.tsx"],"sourcesContent":["import { FC, useEffect, useState } from 'react';\r\nimport { File as FileIcon } from 'lucide-react';\r\nimport { DEFAULT_IMAGES_TYPES, FilePreviewProps } from './Dropzone.types';\r\nimport { isFile } from './DropzoneUtils';\r\nimport { cn } from '@oneplatformdev/utils';\r\nimport { MediaPlayer, MediaProvider } from '@vidstack/react';\r\nimport { defaultLayoutIcons, DefaultVideoLayout } from '@vidstack/react/player/layouts/default';\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\n\r\nexport const FilePreview: FC<FilePreviewProps> = ({ item, styles }) => {\r\n const [preview, setPreview] = useState<string | null>(null);\r\n\r\n const isFileTypeImage =\r\n isFile(item) && DEFAULT_IMAGES_TYPES.includes(item.type);\r\n const isFileTypeVideo = isFile(item) && item.type.includes('video');\r\n\r\n useEffect(() => {\r\n let img: HTMLImageElement | null = null;\r\n\r\n if (isFile(item) && isFileTypeImage) {\r\n const reader = new FileReader();\r\n reader.onloadend = () => setPreview(reader.result as string);\r\n reader.readAsDataURL(item);\r\n\r\n return () => setPreview(null);\r\n } else if (typeof item === 'string') {\r\n img = new Image();\r\n img.src = item;\r\n img.onload = () => setPreview(item);\r\n img.onerror = () => setPreview(null);\r\n\r\n return () => {\r\n img!.onload = null;\r\n img!.onerror = null;\r\n };\r\n } else if (isFile(item) && isFileTypeVideo) {\r\n const objectUrl = URL.createObjectURL(item);\r\n setPreview(objectUrl);\r\n return () => URL.revokeObjectURL(objectUrl);\r\n } else {\r\n setPreview(null);\r\n }\r\n\r\n return () => setPreview(null);\r\n }, [item, isFileTypeImage, isFileTypeVideo]);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'w-32 h-32 border border-gray-300 rounded-md overflow-hidden flex items-center justify-center',\r\n styles?.previewWraper\r\n )}\r\n >\r\n {preview && isFileTypeVideo ? (\r\n <div className=\"w-full h-full bg-black\" onClick={(event) => event.stopPropagation()}>\r\n <MediaPlayer\r\n src={isFile(item) ? { src: preview, type: item.type } : preview}\r\n className=\"h-full w-full bg-black text-white\"\r\n playsInline\r\n >\r\n <MediaProvider />\r\n <DefaultVideoLayout icons={defaultLayoutIcons} />\r\n </MediaPlayer>\r\n </div>\r\n ) : preview ? (\r\n <img\r\n src={preview}\r\n alt={isFile(item) ? item.name : 'external-image'}\r\n className={cn('w-full h-full object-cover', styles?.previewImage)}\r\n />\r\n ) : (\r\n <div\r\n className={cn(\r\n 'flex flex-col items-center justify-center text-gray-500 text-sm p-2 text-center',\r\n styles?.previewFile\r\n )}\r\n >\r\n <FileIcon className=\"w-6 h-6\" />\r\n {!isFile(item) ? (\r\n <span className=\"text-xs break-all\">{item}</span>\r\n ) : (\r\n <span className=\"text-xs break-all\">{item.name}</span>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n"],"names":["FilePreview","item","styles","preview","setPreview","useState","isFileTypeImage","isFile","DEFAULT_IMAGES_TYPES","isFileTypeVideo","useEffect","img","reader","objectUrl","jsx","cn","event","jsxs","MediaPlayer","MediaProvider","DefaultVideoLayout","defaultLayoutIcons","FileIcon"],"mappings":";;;;;;;;;;;;AAYO,MAAMA,IAAoC,CAAC,EAAE,MAAAC,GAAM,QAAAC,QAAa;AACrE,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAwB,IAAI,GAEpDC,IACJC,EAAON,CAAI,KAAKO,EAAqB,SAASP,EAAK,IAAI,GACnDQ,IAAkBF,EAAON,CAAI,KAAKA,EAAK,KAAK,SAAS,OAAO;AAElE,SAAAS,EAAU,MAAM;AACd,QAAIC,IAA+B;AAEnC,QAAIJ,EAAON,CAAI,KAAKK,GAAiB;AACnC,YAAMM,IAAS,IAAI,WAAA;AACnB,aAAAA,EAAO,YAAY,MAAMR,EAAWQ,EAAO,MAAgB,GAC3DA,EAAO,cAAcX,CAAI,GAElB,MAAMG,EAAW,IAAI;AAAA,IAC9B,OAAA;AAAA,UAAW,OAAOH,KAAS;AACzB,eAAAU,IAAM,IAAI,MAAA,GACVA,EAAI,MAAMV,GACVU,EAAI,SAAS,MAAMP,EAAWH,CAAI,GAClCU,EAAI,UAAU,MAAMP,EAAW,IAAI,GAE5B,MAAM;AACX,UAAAO,EAAK,SAAS,MACdA,EAAK,UAAU;AAAA,QACjB;AACF,UAAWJ,EAAON,CAAI,KAAKQ,GAAiB;AAC1C,cAAMI,IAAY,IAAI,gBAAgBZ,CAAI;AAC1C,eAAAG,EAAWS,CAAS,GACb,MAAM,IAAI,gBAAgBA,CAAS;AAAA,MAC5C;AACE,QAAAT,EAAW,IAAI;AAAA;AAGjB,WAAO,MAAMA,EAAW,IAAI;AAAA,EAC9B,GAAG,CAACH,GAAMK,GAAiBG,CAAe,CAAC,GAGzC,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAb,GAAQ;AAAA,MAAA;AAAA,MAGT,UAAAC,KAAWM,IACV,gBAAAK,EAAC,OAAA,EAAI,WAAU,0BAAyB,SAAS,CAACE,MAAUA,EAAM,gBAAA,GAChE,UAAA,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,KAAKX,EAAON,CAAI,IAAI,EAAE,KAAKE,GAAS,MAAMF,EAAK,KAAA,IAASE;AAAA,UACxD,WAAU;AAAA,UACV,aAAW;AAAA,UAEX,UAAA;AAAA,YAAA,gBAAAW,EAACK,GAAA,EAAc;AAAA,YACf,gBAAAL,EAACM,GAAA,EAAmB,OAAOC,EAAA,CAAoB;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,EACjD,CACF,IACElB,IACF,gBAAAW;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAKX;AAAA,UACL,KAAKI,EAAON,CAAI,IAAIA,EAAK,OAAO;AAAA,UAChC,WAAWc,EAAG,8BAA8Bb,GAAQ,YAAY;AAAA,QAAA;AAAA,MAAA,IAGlE,gBAAAe;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWF;AAAA,YACT;AAAA,YACAb,GAAQ;AAAA,UAAA;AAAA,UAGV,UAAA;AAAA,YAAA,gBAAAY,EAACQ,GAAA,EAAS,WAAU,UAAA,CAAU;AAAA,YAC5Bf,EAAON,CAAI,IAGX,gBAAAa,EAAC,QAAA,EAAK,WAAU,qBAAqB,YAAK,KAAA,CAAK,sBAF9C,QAAA,EAAK,WAAU,qBAAqB,UAAAb,EAAA,CAAK;AAAA,UAEK;AAAA,QAAA;AAAA,MAAA;AAAA,IAEnD;AAAA,EAAA;AAIR;"}
1
+ {"version":3,"file":"DropzoneFilePreview.js","sources":["../../src/Dropzone/DropzoneFilePreview.tsx"],"sourcesContent":["import { FC, useEffect, useState } from 'react';\r\nimport { File as FileIcon } from 'lucide-react';\r\nimport { DEFAULT_IMAGES_TYPES, FilePreviewProps } from './Dropzone.types';\r\nimport { isFile } from './DropzoneUtils';\r\nimport { cn } from '@oneplatformdev/utils';\r\nimport { MediaPlayer, MediaProvider } from '@vidstack/react';\r\nimport { defaultLayoutIcons, DefaultVideoLayout } from '@vidstack/react/player/layouts/default';\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\n\r\nexport const FilePreview: FC<FilePreviewProps> = ({ item, styles }) => {\r\n const [preview, setPreview] = useState<string | null>(null);\r\n\r\n const isFileTypeImage =\r\n isFile(item) && DEFAULT_IMAGES_TYPES.includes(item.type);\r\n const isFileTypeVideo = isFile(item) && item.type.includes('video');\r\n\r\n useEffect(() => {\r\n let img: HTMLImageElement | null = null;\r\n\r\n if (isFile(item) && isFileTypeImage) {\r\n const reader = new FileReader();\r\n reader.onloadend = () => setPreview(reader.result as string);\r\n reader.readAsDataURL(item);\r\n\r\n return () => setPreview(null);\r\n } else if (typeof item === 'string') {\r\n img = new Image();\r\n img.src = item;\r\n img.onload = () => setPreview(item);\r\n img.onerror = () => setPreview(null);\r\n\r\n return () => {\r\n img!.onload = null;\r\n img!.onerror = null;\r\n };\r\n } else if (isFile(item) && isFileTypeVideo) {\r\n const objectUrl = URL.createObjectURL(item);\r\n setPreview(objectUrl);\r\n return () => URL.revokeObjectURL(objectUrl);\r\n } else {\r\n setPreview(null);\r\n }\r\n\r\n return () => setPreview(null);\r\n }, [item, isFileTypeImage, isFileTypeVideo]);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'w-32 h-32 border border-gray-300 rounded-md overflow-hidden flex items-center justify-center',\r\n styles?.previewWraper\r\n )}\r\n >\r\n {preview && isFileTypeVideo ? (\r\n <div className=\"w-full h-full bg-black\" onClick={(event) => event.stopPropagation()}>\r\n <MediaPlayer\r\n src={isFile(item) ? { src: preview, type: item.type } : preview}\r\n className=\"h-full w-full bg-black text-white\"\r\n playsInline\r\n >\r\n <MediaProvider />\r\n <DefaultVideoLayout icons={defaultLayoutIcons} />\r\n </MediaPlayer>\r\n </div>\r\n ) : preview ? (\r\n <img\r\n src={preview}\r\n alt={isFile(item) ? item.name : 'external-image'}\r\n className={cn('w-full h-full object-cover', styles?.previewImage)}\r\n />\r\n ) : (\r\n <div\r\n className={cn(\r\n 'flex flex-col items-center justify-center text-gray-500 text-sm p-2 text-center',\r\n styles?.previewFile\r\n )}\r\n >\r\n <FileIcon className=\"w-6 h-6\" />\r\n {!isFile(item) ? (\r\n <span className=\"text-xs break-all\">{item}</span>\r\n ) : (\r\n <span className=\"text-xs break-all\">{item.name}</span>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n"],"names":["FilePreview","item","styles","preview","setPreview","useState","isFileTypeImage","isFile","DEFAULT_IMAGES_TYPES","isFileTypeVideo","useEffect","img","reader","objectUrl","jsx","cn","event","jsxs","MediaPlayer","MediaProvider","DefaultVideoLayout","defaultLayoutIcons","FileIcon"],"mappings":";;;;;;;;;;;AAYO,MAAMA,IAAoC,CAAC,EAAE,MAAAC,GAAM,QAAAC,QAAa;AACrE,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAwB,IAAI,GAEpDC,IACJC,EAAON,CAAI,KAAKO,EAAqB,SAASP,EAAK,IAAI,GACnDQ,IAAkBF,EAAON,CAAI,KAAKA,EAAK,KAAK,SAAS,OAAO;AAElE,SAAAS,EAAU,MAAM;AACd,QAAIC,IAA+B;AAEnC,QAAIJ,EAAON,CAAI,KAAKK,GAAiB;AACnC,YAAMM,IAAS,IAAI,WAAA;AACnB,aAAAA,EAAO,YAAY,MAAMR,EAAWQ,EAAO,MAAgB,GAC3DA,EAAO,cAAcX,CAAI,GAElB,MAAMG,EAAW,IAAI;AAAA,IAC9B,OAAA;AAAA,UAAW,OAAOH,KAAS;AACzB,eAAAU,IAAM,IAAI,MAAA,GACVA,EAAI,MAAMV,GACVU,EAAI,SAAS,MAAMP,EAAWH,CAAI,GAClCU,EAAI,UAAU,MAAMP,EAAW,IAAI,GAE5B,MAAM;AACX,UAAAO,EAAK,SAAS,MACdA,EAAK,UAAU;AAAA,QACjB;AACF,UAAWJ,EAAON,CAAI,KAAKQ,GAAiB;AAC1C,cAAMI,IAAY,IAAI,gBAAgBZ,CAAI;AAC1C,eAAAG,EAAWS,CAAS,GACb,MAAM,IAAI,gBAAgBA,CAAS;AAAA,MAC5C;AACE,QAAAT,EAAW,IAAI;AAAA;AAGjB,WAAO,MAAMA,EAAW,IAAI;AAAA,EAC9B,GAAG,CAACH,GAAMK,GAAiBG,CAAe,CAAC,GAGzC,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAb,GAAQ;AAAA,MAAA;AAAA,MAGT,UAAAC,KAAWM,IACV,gBAAAK,EAAC,OAAA,EAAI,WAAU,0BAAyB,SAAS,CAACE,MAAUA,EAAM,gBAAA,GAChE,UAAA,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,KAAKX,EAAON,CAAI,IAAI,EAAE,KAAKE,GAAS,MAAMF,EAAK,KAAA,IAASE;AAAA,UACxD,WAAU;AAAA,UACV,aAAW;AAAA,UAEX,UAAA;AAAA,YAAA,gBAAAW,EAACK,GAAA,EAAc;AAAA,YACf,gBAAAL,EAACM,GAAA,EAAmB,OAAOC,EAAA,CAAoB;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA,EACjD,CACF,IACElB,IACF,gBAAAW;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAKX;AAAA,UACL,KAAKI,EAAON,CAAI,IAAIA,EAAK,OAAO;AAAA,UAChC,WAAWc,EAAG,8BAA8Bb,GAAQ,YAAY;AAAA,QAAA;AAAA,MAAA,IAGlE,gBAAAe;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWF;AAAA,YACT;AAAA,YACAb,GAAQ;AAAA,UAAA;AAAA,UAGV,UAAA;AAAA,YAAA,gBAAAY,EAACQ,GAAA,EAAS,WAAU,UAAA,CAAU;AAAA,YAC5Bf,EAAON,CAAI,IAGX,gBAAAa,EAAC,QAAA,EAAK,WAAU,qBAAqB,YAAK,KAAA,CAAK,sBAF9C,QAAA,EAAK,WAAU,qBAAqB,UAAAb,EAAA,CAAK;AAAA,UAEK;AAAA,QAAA;AAAA,MAAA;AAAA,IAEnD;AAAA,EAAA;AAIR;"}
@@ -2,14 +2,13 @@ import { jsxs as c, jsx as t } from "react/jsx-runtime";
2
2
  import { useState as y, useMemo as d, useEffect as w } from "react";
3
3
  import { isFile as N } from "./DropzoneUtils.js";
4
4
  import { X as x, FileIcon as v, Video as k, PencilIcon as L, Trash2 as F } from "lucide-react";
5
- import { MediaPlayer as P, MediaProvider as z } from "../node_modules/.pnpm/@vidstack_react@1.12.13_@types_react@19.1.13_react@19.1.1/node_modules/@vidstack/react/prod/vidstack.js";
6
- import { Button as E } from "../Button/Button.js";
7
- /* empty css */
8
- /* empty css */
9
- /* empty css */
5
+ import { MediaPlayer as P, MediaProvider as z } from "@vidstack/react";
6
+ import { DefaultVideoLayout as E, defaultLayoutIcons as I } from "@vidstack/react/player/layouts/default";
7
+ import { Button as U } from "../Button/Button.js";
8
+ import "@vidstack/react/player/styles/base.css";
9
+ import "@vidstack/react/player/styles/default/theme.css";
10
+ import "@vidstack/react/player/styles/default/layouts/video.css";
10
11
  /* empty css */
11
- import { DefaultVideoLayout as I } from "../node_modules/.pnpm/@vidstack_react@1.12.13_@types_react@19.1.13_react@19.1.1/node_modules/@vidstack/react/prod/chunks/vidstack-D27o2o-g.js";
12
- import { defaultLayoutIcons as U } from "../node_modules/.pnpm/@vidstack_react@1.12.13_@types_react@19.1.13_react@19.1.1/node_modules/@vidstack/react/prod/player/vidstack-default-icons.js";
13
12
  import { ButtonIcon as j } from "../ButtonIcon/ButtonIcon.js";
14
13
  const C = (e) => {
15
14
  if (!e) return "";
@@ -38,19 +37,19 @@ const C = (e) => {
38
37
  return o.pathname.replace("/", "").trim();
39
38
  const f = o.searchParams.get("v");
40
39
  if (f) return f.trim();
41
- const u = o.pathname.split("/").filter(Boolean), l = u.findIndex((m) => m === "embed");
40
+ const u = o.pathname.split("/").filter(Boolean), l = u.findIndex((h) => h === "embed");
42
41
  return l >= 0 && u[l + 1] ? u[l + 1].trim() : "";
43
42
  } catch {
44
43
  return "";
45
44
  }
46
- }, H = ({
45
+ }, G = ({
47
46
  item: e,
48
47
  disabled: o,
49
48
  onRemoveClick: i,
50
49
  onReplaceClick: f,
51
50
  labelReplace: u = "Замінити"
52
51
  }) => {
53
- const [l, m] = y(""), n = N(e), h = n ? e.name : e, s = d(
52
+ const [l, h] = y(""), n = N(e), m = n ? e.name : e, s = d(
54
53
  () => typeof e == "string" && S(e),
55
54
  [e]
56
55
  ), g = d(() => {
@@ -61,10 +60,10 @@ const C = (e) => {
61
60
  return w(() => {
62
61
  if (p || a) {
63
62
  const r = C(e);
64
- if (m(r), n && r)
63
+ if (h(r), n && r)
65
64
  return () => URL.revokeObjectURL(r);
66
65
  } else
67
- m("");
66
+ h("");
68
67
  }, [e, n, p, a]), /* @__PURE__ */ c("div", { className: "relative w-full overflow-hidden", children: [
69
68
  a && l ? /* @__PURE__ */ t("div", { className: "w-full h-64 sm:h-80 md:h-96 rounded-lg overflow-hidden bg-black", onClick: (r) => r.stopPropagation(), children: /* @__PURE__ */ c(
70
69
  P,
@@ -74,7 +73,7 @@ const C = (e) => {
74
73
  playsInline: !0,
75
74
  children: [
76
75
  /* @__PURE__ */ t(z, {}),
77
- /* @__PURE__ */ t(I, { icons: U })
76
+ /* @__PURE__ */ t(E, { icons: I })
78
77
  ]
79
78
  }
80
79
  ) }) : !a && l ? /* @__PURE__ */ c("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: [
@@ -83,7 +82,7 @@ const C = (e) => {
83
82
  "img",
84
83
  {
85
84
  src: l,
86
- alt: h?.toString(),
85
+ alt: m?.toString(),
87
86
  className: "w-full h-full object-cover rounded-lg "
88
87
  }
89
88
  )
@@ -91,7 +90,7 @@ const C = (e) => {
91
90
  !o && /* @__PURE__ */ t("div", { className: "absolute top-2 right-2 cursor-pointer bg-white/70 rounded-[4px] p-1 shadow-sm", onClick: i, children: /* @__PURE__ */ t(x, { size: 16, strokeWidth: 2, color: "black" }) }),
92
91
  /* @__PURE__ */ c("div", { className: "w-full h-full flex flex-col items-center justify-center text-gray-600", children: [
93
92
  /* @__PURE__ */ t(v, { size: 28 }),
94
- /* @__PURE__ */ t("span", { className: "text-sm mt-2 break-all px-2 text-center", children: h?.toString() })
93
+ /* @__PURE__ */ t("span", { className: "text-sm mt-2 break-all px-2 text-center", children: m?.toString() })
95
94
  ] })
96
95
  ] }),
97
96
  a && !s && /* @__PURE__ */ c(
@@ -102,11 +101,11 @@ const C = (e) => {
102
101
  children: [
103
102
  /* @__PURE__ */ t("div", { className: "size-10 rounded-[8px] bg-[#9368FF1F] flex items-center justify-center shrink-0", children: /* @__PURE__ */ t(k, { className: "size-6 text-[#06080D]" }) }),
104
103
  /* @__PURE__ */ c("div", { className: "flex flex-col items-start text-left gap-1 min-w-0 flex-1 justify-start", children: [
105
- /* @__PURE__ */ t("span", { className: "w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate text-left", children: h?.toString() }),
104
+ /* @__PURE__ */ t("span", { className: "w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate text-left", children: m?.toString() }),
106
105
  /* @__PURE__ */ t("span", { className: "w-full text-[12px] font-medium leading-[120%] text-[#363B4E] text-left", children: b })
107
106
  ] }),
108
107
  !o && /* @__PURE__ */ t(
109
- E,
108
+ U,
110
109
  {
111
110
  type: "button",
112
111
  color: "secondary",
@@ -134,7 +133,7 @@ const C = (e) => {
134
133
  ] });
135
134
  };
136
135
  export {
137
- H as DropzoneSinglePickPreview,
136
+ G as DropzoneSinglePickPreview,
138
137
  C as transformImageToSrc
139
138
  };
140
139
  //# sourceMappingURL=DropzoneSinglePickPreview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropzoneSinglePickPreview.js","sources":["../../src/Dropzone/DropzoneSinglePickPreview.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\r\nimport { DropzoneValueItem } from './Dropzone.types';\r\nimport { isFile } from './DropzoneUtils';\r\nimport { FileIcon, PencilIcon, Trash2, Video, X } from 'lucide-react';\r\nimport { MediaPlayer, MediaProvider } 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\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}\r\n\r\nexport const DropzoneSinglePickPreview = ({\r\n item,\r\n disabled,\r\n onRemoveClick,\r\n onReplaceClick,\r\n labelReplace = 'Замінити',\r\n}: SinglePickPreviewProps) => {\r\n const [previewUrl, setPreviewUrl] = useState('');\r\n const isFileType = isFile(item);\r\n const fileName = isFileType ? item.name : item;\r\n\r\n const isYoutubeVideo = useMemo(\r\n () => typeof item === 'string' && isYoutubeUrl(item),\r\n [item]\r\n );\r\n const youtubeSource = useMemo(() => {\r\n if (!isYoutubeVideo || typeof item !== 'string') return '';\r\n const id = extractYoutubeId(item);\r\n return id ? `youtube/${id}` : item;\r\n }, [isYoutubeVideo, item]);\r\n\r\n const showImage = useMemo(() => {\r\n return (isFileType && item.type?.includes('image')) || (typeof item === 'string' && !isYoutubeVideo);\r\n }, [item, isFileType, isYoutubeVideo]);\r\n\r\n const showVideo = useMemo(() => {\r\n return (isFileType && item.type?.includes('video')) || isYoutubeVideo;\r\n }, [item, isFileType, isYoutubeVideo]);\r\n\r\n const fileSize = useMemo(() => {\r\n if (!isFileType) return '';\r\n return `${(item.size / (1024 * 1024)).toFixed(0)} MB`;\r\n }, [item, isFileType]);\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 {showVideo && previewUrl ? (\r\n <div className=\"w-full h-64 sm:h-80 md:h-96 rounded-lg overflow-hidden bg-black\" onClick={(event) => event.stopPropagation()}>\r\n <MediaPlayer\r\n src={\r\n isYoutubeVideo\r\n ? youtubeSource\r\n : { src: previewUrl, type: isFileType ? item.type : undefined }\r\n }\r\n className={`h-full w-full bg-black text-white ${\r\n isYoutubeVideo ? 'dropzone-youtube-player' : ''\r\n }`}\r\n playsInline\r\n >\r\n <MediaProvider />\r\n <DefaultVideoLayout icons={defaultLayoutIcons} />\r\n </MediaPlayer>\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":["transformImageToSrc","preview","isYoutubeUrl","value","hostname","extractYoutubeId","url","searchId","pathParts","embedIndex","part","DropzoneSinglePickPreview","item","disabled","onRemoveClick","onReplaceClick","labelReplace","previewUrl","setPreviewUrl","useState","isFileType","isFile","fileName","isYoutubeVideo","useMemo","youtubeSource","id","showImage","showVideo","fileSize","useEffect","nextPreview","jsxs","jsx","event","MediaPlayer","MediaProvider","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, useState } from 'react';\r\nimport { DropzoneValueItem } from './Dropzone.types';\r\nimport { isFile } from './DropzoneUtils';\r\nimport { FileIcon, PencilIcon, Trash2, Video, X } from 'lucide-react';\r\nimport { MediaPlayer, MediaProvider } 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\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}\r\n\r\nexport const DropzoneSinglePickPreview = ({\r\n item,\r\n disabled,\r\n onRemoveClick,\r\n onReplaceClick,\r\n labelReplace = 'Замінити',\r\n}: SinglePickPreviewProps) => {\r\n const [previewUrl, setPreviewUrl] = useState('');\r\n const isFileType = isFile(item);\r\n const fileName = isFileType ? item.name : item;\r\n\r\n const isYoutubeVideo = useMemo(\r\n () => typeof item === 'string' && isYoutubeUrl(item),\r\n [item]\r\n );\r\n const youtubeSource = useMemo(() => {\r\n if (!isYoutubeVideo || typeof item !== 'string') return '';\r\n const id = extractYoutubeId(item);\r\n return id ? `youtube/${id}` : item;\r\n }, [isYoutubeVideo, item]);\r\n\r\n const showImage = useMemo(() => {\r\n return (isFileType && item.type?.includes('image')) || (typeof item === 'string' && !isYoutubeVideo);\r\n }, [item, isFileType, isYoutubeVideo]);\r\n\r\n const showVideo = useMemo(() => {\r\n return (isFileType && item.type?.includes('video')) || isYoutubeVideo;\r\n }, [item, isFileType, isYoutubeVideo]);\r\n\r\n const fileSize = useMemo(() => {\r\n if (!isFileType) return '';\r\n return `${(item.size / (1024 * 1024)).toFixed(0)} MB`;\r\n }, [item, isFileType]);\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 {showVideo && previewUrl ? (\r\n <div className=\"w-full h-64 sm:h-80 md:h-96 rounded-lg overflow-hidden bg-black\" onClick={(event) => event.stopPropagation()}>\r\n <MediaPlayer\r\n src={\r\n isYoutubeVideo\r\n ? youtubeSource\r\n : { src: previewUrl, type: isFileType ? item.type : undefined }\r\n }\r\n className={`h-full w-full bg-black text-white ${\r\n isYoutubeVideo ? 'dropzone-youtube-player' : ''\r\n }`}\r\n playsInline\r\n >\r\n <MediaProvider />\r\n <DefaultVideoLayout icons={defaultLayoutIcons} />\r\n </MediaPlayer>\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":["transformImageToSrc","preview","isYoutubeUrl","value","hostname","extractYoutubeId","url","searchId","pathParts","embedIndex","part","DropzoneSinglePickPreview","item","disabled","onRemoveClick","onReplaceClick","labelReplace","previewUrl","setPreviewUrl","useState","isFileType","isFile","fileName","isYoutubeVideo","useMemo","youtubeSource","id","showImage","showVideo","fileSize","useEffect","nextPreview","jsxs","jsx","event","MediaPlayer","MediaProvider","DefaultVideoLayout","defaultLayoutIcons","X","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.265",
3
+ "version": "0.1.99-beta.267",
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.265",
113
- "@oneplatformdev/utils": "^0.1.99-beta.265",
114
- "@oneplatformdev/hooks": "^0.1.99-beta.265"
112
+ "@oneplatformdev/hooks": "^0.1.99-beta.267",
113
+ "@oneplatformdev/tokens": "^0.1.99-beta.267",
114
+ "@oneplatformdev/utils": "^0.1.99-beta.267"
115
115
  },
116
116
  "scripts": {
117
117
  "chromatic": "chromatic"
package/styles.css CHANGED
@@ -1 +1 @@
1
- [data-media-player]{width:100%;display:inline-flex;align-items:center;position:relative;contain:style;box-sizing:border-box;-webkit-user-select:none;user-select:none}[data-media-player] *{box-sizing:border-box}:where([data-media-player][data-view-type=video]){aspect-ratio:16 / 9}[data-media-player]:focus,[data-media-player]:focus-visible{outline:none}[data-media-player][data-view-type=video][data-started]:not([data-controls]){pointer-events:auto;cursor:none}[data-media-player] slot{display:contents}[data-media-provider]{display:flex;position:relative;box-sizing:border-box;align-items:center;border-radius:inherit;width:100%;aspect-ratio:inherit;overflow:hidden}[data-media-player]:not([data-view-type=audio]) [data-media-provider],[data-media-player][data-fullscreen] [data-media-provider]{height:100%}[data-media-player][data-view-type=audio] [data-media-provider]{display:contents;background-color:unset}[data-media-provider] audio{width:100%}:where(video:not([width]):not([height]),iframe:not([width]):not([height])){width:100%;aspect-ratio:16 / 9}:where([data-media-provider] video),:where([data-media-provider] iframe){aspect-ratio:inherit;display:inline-block;height:auto;object-fit:contain;touch-action:manipulation;border-radius:inherit;width:100%}[data-media-provider] iframe{height:100%}[data-media-player][data-view-type=audio] video,[data-media-player][data-view-type=audio] iframe{display:none}[data-media-player][data-fullscreen] video{height:100%}[data-media-provider] iframe:not([src]){display:none}iframe.vds-youtube[data-no-controls]{height:1000%}.vds-blocker{position:absolute;inset:0;width:100%;height:auto;aspect-ratio:inherit;pointer-events:auto;border-radius:inherit;z-index:1}[data-ended] .vds-blocker{background-color:#000}.vds-icon:focus{outline:none}.vds-google-cast{width:100%;height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#dedede;font-family:sans-serif;font-weight:500}.vds-google-cast svg{--size: max(18%, 40px);width:var(--size);height:var(--size);margin-bottom:8px}.vds-google-cast-info{font-size:calc(var(--media-height) / 100 * 6)}:where(.vds-buffering-indicator){position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:1}:where(.vds-buffering-indicator) :where(.vds-buffering-icon,.vds-buffering-spinner){opacity:0;pointer-events:none;transition:var(--media-buffering-transition, opacity .2s ease)}:where(.vds-buffering-indicator) :where(.vds-buffering-icon,svg.vds-buffering-spinner,.vds-buffering-spinner svg){width:var(--media-buffering-size, 96px);height:var(--media-buffering-size, 96px)}:where(.vds-buffering-indicator) :where(.vds-buffering-track,circle[data-part=track]){color:var(--media-buffering-track-color, #f5f5f5);opacity:var(--media-buffering-track-opacity, .25);stroke-width:var(--media-buffering-track-width, 8)}:where(.vds-buffering-indicator) :where(.vds-buffering-track-fill,circle[data-part=track-fill]){color:var(--media-buffering-track-fill-color, var(--media-brand));opacity:var(--media-buffering-track-fill-opacity, .75);stroke-width:var(--media-buffering-track-fill-width, 9);stroke-dasharray:100;stroke-dashoffset:var(--media-buffering-track-fill-offset, 50)}:where([data-buffering]) :where(.vds-buffering-icon,.vds-buffering-spinner){opacity:1;animation:var(--media-buffering-animation, vds-buffering-spin 1s linear infinite)}@keyframes vds-buffering-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion){:where([data-buffering]) :where(.vds-buffering-icon,.vds-buffering-spinner){animation-duration:8s}}:where(.vds-button){position:relative;display:inline-flex;justify-content:center;align-items:center;user-select:none;appearance:none;background:none;outline:none;border:none;border-radius:var(--media-button-border-radius, 8px);width:var(--media-button-size, 40px);height:var(--media-button-size, 40px);transition:transform .2s ease-out;contain:layout style;cursor:pointer;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;flex-shrink:0}.vds-button{border:var(--media-button-border);color:var(--media-button-color, var(--media-controls-color, #f5f5f5));padding:var(--media-button-padding, 0px)}:where([data-fullscreen] .vds-button){width:var(--media-fullscreen-button-size, 42px);height:var(--media-fullscreen-button-size, 42px)}@media screen and (max-width: 599px){:where([data-fullscreen] .vds-button){width:var(--media-sm-fullscreen-button-size, 42px);height:var(--media-sm-fullscreen-button-size, 42px)}}:where(.vds-button .vds-icon){width:var(--media-button-icon-size, 80%);height:var(--media-button-icon-size, 80%);border-radius:var(--media-button-border-radius, 8px)}:where(.vds-menu-button .vds-icon){display:flex!important}:where(.vds-button[aria-hidden=true]){display:none!important}@media (hover: hover) and (pointer: fine){.vds-button:hover{background-color:var(--media-button-hover-bg, rgb(255 255 255 / .2))}.vds-button:hover{transform:var(--media-button-hover-transform, scale(1.05));transition:var(--media-button-hover-transition, transform .2s ease-in)}.vds-button[aria-expanded=true]{transform:unset}}@media (pointer: coarse){.vds-button:hover{border-radius:var(--media-button-touch-hover-border-radius, 100%);background-color:var(--media-button-touch-hover-bg, rgb(255 255 255 / .2))}}:where(.vds-button:focus){outline:none}:where(.vds-button[data-focus],.vds-button:focus-visible){box-shadow:var(--media-focus-ring)}:where(.vds-live-button){min-width:auto;min-height:auto;width:var(--media-live-button-width, 40px);height:var(--media-live-button-height, 40px);padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-user-select:none;user-select:none;appearance:none;background:none;outline:none;border:none}:where(.vds-live-button-text){font-family:var(--media-font-family, sans-serif);font-size:var(--media-live-button-font-size, 12px);font-weight:var(--media-live-button-font-weight, 600);letter-spacing:var(--media-live-button-letter-spacing, 1.5px);transition:color .3s ease}.vds-live-button-text{background-color:var(--media-live-button-bg, #8a8a8a);border-radius:var(--media-live-button-border-radius, 2px);color:var(--media-live-button-color, #161616);padding:var(--media-live-button-padding, 1px 4px)}:where(.vds-live-button[data-focus] .vds-live-button-text){box-shadow:var(--media-focus-ring)}:where(.vds-live-button[data-edge]){cursor:unset}.vds-live-button[data-edge] .vds-live-button-text{background-color:var(--media-live-button-edge-bg, #dc2626);color:var(--media-live-button-edge-color, #f5f5f5)}@media (pointer: fine){:where(.vds-live-button:hover){background-color:unset}}.vds-button:not([data-paused]) .vds-play-icon,.vds-button[data-ended] .vds-play-icon,.vds-button[data-paused] .vds-pause-icon,.vds-button[data-ended] .vds-pause-icon,.vds-button:not([data-ended]) .vds-replay-icon,.vds-button[data-active] .vds-pip-enter-icon,.vds-button:not([data-active]) .vds-pip-exit-icon,.vds-button[data-active] .vds-fs-enter-icon,.vds-button:not([data-active]) .vds-fs-exit-icon,.vds-button:not([data-active]) .vds-cc-on-icon,.vds-button[data-active] .vds-cc-off-icon,.vds-button:not([data-muted]) .vds-mute-icon,.vds-button:not([data-state=low]) .vds-volume-low-icon,.vds-button:not([data-state=high]) .vds-volume-high-icon{display:none}:where(.vds-captions){--overlay-padding: var(--media-captions-padding, 1%);--cue-color: var(--media-user-text-color, var(--media-cue-color, white));--cue-bg-color: var(--media-user-text-bg, var(--media-cue-bg, rgba(0, 0, 0, .7)));--cue-default-font-size: var(--media-cue-font-size, calc(var(--overlay-height) / 100 * 4.5));--cue-font-size: calc(var(--cue-default-font-size) * var(--media-user-font-size, 1));--cue-line-height: var(--media-cue-line-height, calc(var(--cue-font-size) * 1.2));--cue-padding-x: var(--media-cue-padding-x, calc(var(--cue-font-size) * .6));--cue-padding-y: var(--media-cue-padding-x, calc(var(--cue-font-size) * .4));--cue-padding: var(--cue-padding-y) var(--cue-padding-x);position:absolute;inset:0;z-index:1;contain:layout style;margin:var(--overlay-padding);font-size:var(--cue-font-size);font-family:var(--media-user-font-family, sans-serif);box-sizing:border-box;pointer-events:none;-webkit-user-select:none;user-select:none;word-spacing:normal;word-break:break-word}:where([data-fullscreen][data-orientation=portrait] .vds-captions){--cue-default-font-size: var(--media-cue-font-size, calc(var(--overlay-width) / 100 * 4.5))}:where([data-view-type=audio] .vds-captions){position:relative;margin:0}:where(.vds-captions[aria-hidden=true]){opacity:0;visibility:hidden}.vds-captions[data-example]{opacity:1!important;visibility:visible!important}:where([data-view-type=video] .vds-captions [data-part=cue-display][data-example]){--cue-text-align: center;--cue-width: 100%;--cue-top: 90%;--cue-left: 0%}:where([data-view-type=audio] .vds-captions [data-part=cue-display]){--cue-width: 100%;position:relative!important}:where(.vds-captions [data-part=cue-display]){position:absolute;direction:ltr;overflow:visible;contain:content;top:var(--cue-top);left:var(--cue-left);right:var(--cue-right);bottom:var(--cue-bottom);width:var(--cue-width, auto);height:var(--cue-height, auto);box-sizing:border-box;transform:var(--cue-transform);text-align:var(--cue-text-align);writing-mode:var(--cue-writing-mode, unset);white-space:pre-line;unicode-bidi:plaintext;min-width:min-content;min-height:min-content;background-color:var(--media-user-display-bg, var(--media-cue-display-bg));border-radius:var(--media-cue-display-border-radius)}.vds-captions [data-part=cue-display]{padding:var(--media-cue-display-padding)}:where(.vds-captions[data-dir=rtl] [data-part=cue-display]){direction:rtl}:where(.vds-captions [data-part=cue]){display:inline-block;contain:content;font-variant:var(--media-user-font-variant);border:var(--media-cue-border, unset);border-radius:var(--media-cue-border-radius, 2px);-webkit-backdrop-filter:var(--media-cue-backdrop, blur(8px));backdrop-filter:var(--media-cue-backdrop, blur(8px));line-height:var(--cue-line-height);box-sizing:border-box;box-shadow:var(--media-cue-box-shadow, var(--cue-box-shadow));white-space:var(--cue-white-space, pre-wrap);outline:var(--cue-outline);text-shadow:var(--media-user-text-shadow, var(--cue-text-shadow))}.vds-captions [data-part=cue]{background-color:var(--cue-bg-color);color:var(--cue-color);padding:var(--cue-padding)}:where(.vds-captions [data-part=cue-display][data-vertical] [data-part=cue]){--cue-padding: var(--cue-padding-x) var(--cue-padding-y)}:where(.vds-captions [data-part=region]){--anchor-x-percent: calc(var(--region-anchor-x) / 100);--anchor-x: calc(var(--region-width) * var(--anchor-x-percent));--anchor-y-percent: calc(var(--region-anchor-y) / 100);--anchor-y: calc(var(--region-height) * var(--anchor-y-percent));--vp-anchor-x: calc(var(--region-viewport-anchor-x) * 1%);--vp-anchor-y-percent: calc(var(--region-viewport-anchor-y) / 100);--vp-anchor-y: calc(var(--overlay-height) * var(--vp-anchor-y-percent));position:absolute;display:inline-flex;flex-flow:column;justify-content:flex-start;width:var(--region-width);height:var(--region-height);min-height:0px;max-height:var(--region-height);writing-mode:horizontal-tb;top:var(--region-top, calc(var(--vp-anchor-y) - var(--anchor-y)));left:var(--region-left, calc(var(--vp-anchor-x) - var(--anchor-x)));right:var(--region-right);bottom:var(--region-bottom);overflow:hidden;overflow-wrap:break-word;box-sizing:border-box}:where(.vds-captions [data-part=region][data-scroll=up]){justify-content:end}:where(.vds-captions [data-part=region][data-active][data-scroll=up]){transition:top .433s}:where(.vds-captions [data-part=region]>[data-part=cue-display]){position:relative;width:auto;left:var(--cue-offset);height:var(--cue-height, auto);text-align:var(--cue-text-align);unicode-bidi:plaintext;margin-top:2px}:where(.vds-captions [data-part=region] [data-part=cue]){position:relative;border-radius:0}:where(.vds-chapter-title){--color: var(--media-chapter-title-color, rgba(255 255 255 / .64));display:inline-block;font-family:var(--media-font-family, sans-serif);font-size:var(--media-chapter-title-font-size, 16px);font-weight:var(--media-chapter-title-font-weight, 400);color:var(--color);flex:1 1 0%;padding-inline:6px;overflow:hidden;text-align:start;white-space:nowrap;text-overflow:ellipsis}.vds-chapter-title:before{content:var(--media-chapter-title-separator, "•");display:inline-block;margin-right:var(--media-chapter-title-separator-gap, 6px);color:var(--media-chapter-title-separator-color, var(--color))}.vds-chapter-title:empty:before{content:"";margin:0}:where(.vds-controls),:where(.vds-controls-group){position:relative;display:inline-block;width:100%;box-sizing:border-box}:where([data-view-type=audio] .vds-controls){display:inline-block;max-width:100%}:where([data-view-type=video] .vds-controls){display:flex;position:absolute;flex-direction:column;inset:0;width:100%;height:100%;z-index:10;opacity:0;visibility:hidden;pointer-events:none;padding:var(--media-controls-padding, 0px);transition:var(--media-controls-out-transition, opacity .2s ease-out)}:where([data-view-type=video] .vds-controls[data-visible]){opacity:1;visibility:visible;transition:var(--media-controls-in-transition, opacity .2s ease-in)}:where(.vds-controls-spacer){flex:1 1 0%;pointer-events:none}:where(.vds-gestures){display:contents}:where(.vds-gesture){position:absolute;display:block;contain:content;z-index:0;opacity:0;visibility:hidden;pointer-events:none!important}:where(.vds-icon svg){display:block;width:100%;height:100%;vertical-align:middle}:where(.vds-kb-action.hidden){opacity:0}:where(.vds-kb-text-wrapper){text-align:center;position:absolute;left:0;right:0;top:var(--media-kb-text-top, 10%);z-index:20;pointer-events:none}:where(.vds-kb-text){display:inline-block;font-size:var(--media-kb-text-size, 150%);font-family:var(--media-font-family, sans-serif);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-radius:var(--media-kb-border-radius, 2.5px);pointer-events:none}.vds-kb-text{color:var(--media-kb-text-color, var(--default-color));background-color:var(--media-kb-text-bg, var(--default-bg));padding:var(--media-kb-text-padding, 10px 20px)}.light .vds-kb-text{--default-color: #1a1a1a;--default-bg: rgb(240 240 240 / .6)}.dark .vds-kb-text{--default-color: #f5f5f5;--default-bg: rgb(10 10 10 / .6)}:where(.vds-kb-text:empty){display:none}:where(.vds-kb-bezel){--size: var(--media-kb-bezel-size, 52px);position:absolute;left:50%;top:45%;display:flex;flex-direction:column;align-items:center;justify-content:center;width:var(--size);height:var(--size);margin-left:calc(-1 * calc(var(--size) / 2));margin-right:calc(-1 * calc(var(--size) / 2));z-index:20;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:var(--media-kb-bezel-bg, var(--default-bg));animation:var(--media-kb-bezel-animation, vds-bezel-fade .35s linear 1 normal forwards);border-radius:var(--media-kb-bezel-border-radius, calc(var(--size) / 2));pointer-events:none}.vds-kb-bezel:not(:has(svg)){display:none!important}.light .vds-kb-bezel{--default-bg: rgb(255 255 255 / .6)}.dark .vds-kb-bezel{--default-bg: rgb(10 10 10 / .6)}@media (prefers-reduced-motion){:where(.vds-kb-bezel){animation:none}}:where(.vds-kb-bezel:has(slot:empty)){opacity:0}:where(.vds-kb-action[data-action=seek-forward] .vds-kb-bezel){top:45%;left:unset;right:10%}:where(.vds-kb-action[data-action=seek-backward] .vds-kb-bezel){top:45%;left:10%}:where(.vds-kb-icon){--size: var(--media-kb-icon-size, 38px);width:var(--size);height:var(--size)}.vds-kb-icon{color:var(--media-kb-icon-color, var(--default-color))}.light .vds-kb-icon{--default-color: #1a1a1a}.dark .vds-kb-icon{--default-color: #f5f5f5}@keyframes vds-bezel-fade{0%{opacity:1}to{opacity:0;transform:scale(2)}}:where(.vds-menu-items){--color-inverse: var(--media-menu-color-inverse, var(--default-inverse));--color-gray-50: var(--media-menu-color-gray-50, var(--default-gray-50));--color-gray-100: var(--media-menu-color-gray-100, var(--default-gray-100));--color-gray-200: var(--media-menu-color-gray-200, var(--default-gray-200));--color-gray-300: var(--media-menu-color-gray-300, var(--default-gray-300));--color-gray-400: var(--media-menu-color-gray-400, var(--default-gray-400));--text-color: var(--media-menu-text-color, var(--default-text));--text-secondary-color: var(--media-menu-text-secondary-color, var(--default-text-secondary));--root-border: var(--media-menu-border, var(--default-root-border))}.light .vds-menu-items{--default-inverse: black;--default-gray-50: rgb(80 80 80 / .15);--default-gray-100: rgb(80 80 80 / .45);--default-gray-200: rgb(235 235 235 / .6);--default-gray-300: rgb(238 238 238);--default-gray-400: rgb(250 250 250);--default-text: #1a1a1a;--default-text-secondary: #6b6b6b;--default-root-border: 1px solid rgb(10 10 10 / .1)}.dark .vds-menu-items{--default-inverse: white;--default-gray-50: rgb(245 245 245 / .1);--default-gray-100: rgb(245 245 245 / .45);--default-gray-200: rgb(10 10 10 / .6);--default-gray-300: rgb(27 27 27);--default-gray-400: rgb(10 10 10);--default-text: #f5f5f5;--default-text-secondary: #8a8a8a;--default-root-border: 1px solid rgb(255 255 255 / .1)}:where(.vds-menu-items){--font-family: var(--media-font-family, sans-serif);--font-size: var(--media-menu-font-size, 14px);--font-weight: var(--media-menu-font-weight, 500);--root-bg: var(--media-menu-bg, var(--color-gray-400));--root-padding: var(--media-menu-padding, 12px);--root-border-radius: var(--media-menu-border-radius, 4px);--divider: var(--media-menu-divider, 1px solid var(--color-gray-50));--section-bg: var(--media-menu-section-bg, var(--color-gray-300));--section-border: var(--media-menu-section-border);--section-divider: var(--media-menu-section-divider, var(--divider));--top-bar-bg: var(--media-menu-top-bar-bg, var(--color-gray-200));--top-bar-divider: var(--media-menu-divider, transparent);--text-hint-color: var(--media-menu-hint-color, var(--text-secondary-color));--chapter-divider: var(--media-chapters-divider, var(--divider));--chapter-active-bg: var(--media-chapters-item-active-bg, var(--color-gray-50));--chapter-active-border-left: var(--media-chapters-item-active-border-left);--chapter-progress-bg: var(--media-chapters-progress-bg, var(--color-inverse));--chapter-time-font-size: var(--media-chapters-time-font-size, 12px);--chapter-time-font-weight: var(--media-chapters-time-font-weight, 500);--chapter-time-gap: var(--media-chapters-time-gap, 6px);--chapter-duration-bg: var(--media-chapters-duration-bg);--item-border: var(--media-menu-item-border, 0);--item-bg: var(--media-menu-item-bg, transparent);--item-hover-bg: var(--media-menu-item-hover-bg, var(--color-gray-50));--item-icon-size: var(--media-menu-item-icon-size, 18px);--item-padding: var(--media-menu-item-padding, 10px);--item-min-height: var(--media-menu-item-height, 40px);--item-border-radius: var(--media-menu-item-border-radius, 2px);--scrollbar-track-bg: var(--media-menu-scrollbar-track-bg, transparent);--scrollbar-thumb-bg: var(--media-menu-scrollbar-thumb-bg, var(--color-gray-50));--webkit-scrollbar-bg: var(--color-gray-400);--webkit-scrollbar-track-bg: var(--media-menu-scrollbar-track-bg, var(--color-gray-50));--checkbox-bg: var(--media-menu-checkbox-bg, var(--color-gray-100));--checkbox-active-bg: var(--media-menu-checkbox-bg-active, #1ba13f);--checkbox-handle-bg: var(--media-menu-checkbox-handle-bg, #f5f5f5);--checkbox-handle-border: var(--media-menu-checkbox-handle-border);--radio-icon-color: var(--media-menu-radio-icon-color, var(--text-color))}:where(.vds-menu[data-root] media-menu[data-root]){display:contents}:where(.vds-menu){font-family:var(--font-family);font-size:var(--font-size);font-weight:var(--font-weight)}:where(.vds-menu[data-disabled][data-root]){display:none}:where(.vds-menu[data-submenu]){display:inline-block}:where(.vds-menu-items:focus){outline:none}:where(.vds-menu-item:focus,.vds-radio:focus){outline:none}:where(.vds-menu-item:focus-visible,.vds-menu-item[data-focus],.vds-radio:focus-visible,.vds-radio[data-focus]){outline:none;box-shadow:var(--media-focus-ring)}:where(.vds-menu[data-open] .vds-tooltip-content){display:none!important}.vds-menu-items [data-hidden]{display:none!important}@media (prefers-reduced-motion: no-preference){:where(.vds-menu-items){scroll-behavior:smooth}}:where(.vds-menu-items){box-sizing:border-box;min-width:var(--media-menu-min-width, 280px);scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb-bg) var(--scrollbar-track-bg);transform:translateZ(0)}:where(.vds-menu-items)::-webkit-scrollbar{background-color:var(--webkit-scrollbar-bg);border-radius:var(--root-border-radius);height:6px;width:5px}:where(.vds-menu-items)::-webkit-scrollbar-track{background-color:var(--webkit-scrollbar-track-bg);border-radius:4px}:where(.vds-menu-items)::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-bg);border-radius:4px}:where(.vds-menu-items)::-webkit-scrollbar-corner{background-color:var(--scrollbar-thumb-bg)}:where(.vds-menu-button){outline:none;box-sizing:border-box}:where(.vds-menu-button .vds-rotate-icon){transition:transform .2s ease-out}:where(.vds-menu-button[aria-expanded=true] .vds-rotate-icon){transform:rotate(var(--media-menu-icon-rotate-deg, 90deg));transition:transform .2s ease-in}:where(.vds-menu-button){display:inline-flex;align-items:center;justify-content:center}@media (prefers-reduced-motion){:where(.vds-menu-button .vds-rotate-icon){transition:unset}}:where(.vds-menu-items){display:flex;align-items:center;flex-direction:column;font-family:var(--font-family);font-size:var(--font-size);font-weight:var(--font-weight);transition:height .35s ease}@media (prefers-reduced-motion){:where(.vds-menu-items){transition:unset}}:where(.vds-menu-items[data-root]){background-color:var(--root-bg);border-radius:var(--root-border-radius);box-shadow:var(--media-menu-box-shadow);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);height:var(--menu-height, auto);will-change:width,height;overflow-y:auto;overscroll-behavior:contain;opacity:0;z-index:9999999;box-sizing:border-box;max-height:var(--media-menu-max-height, 250px);filter:var( --media-menu-filter, drop-shadow(0 4px 3px rgb(0 0 0 / .07)) drop-shadow(0 2px 2px rgb(0 0 0 / .06)) )}.vds-menu-items[data-root]{border:var(--root-border);padding:var(--root-padding)}:where([data-view-type=video]) :where(.vds-menu-items[data-root]){max-height:var(--media-menu-video-max-height, calc(var(--player-height) * .7))}:where(.vds-menu-items[data-transition=height]){--scrollbar-thumb-bg: rgba(0, 0, 0, 0);pointer-events:none;overflow:hidden}.vds-menu-button[aria-disabled=true],.vds-menu-item[aria-disabled=true],.vds-menu-item[data-disabled]{display:none}:where(.vds-menu-items[data-root]){--enter-transform: translateY(0px);--exit-transform: translateY(12px)}:where(.vds-menu-items[data-root]:not([data-placement])){--enter-transform: translateY(-24px)}:where(.vds-menu-items[data-root][aria-hidden=true]){animation:var(--media-menu-exit-animation, vds-menu-exit .2s ease-out)}:where(.vds-menu-items[data-root][aria-hidden=false]){animation:var(--media-menu-enter-animation, vds-menu-enter .3s ease-out);animation-fill-mode:forwards}:where(.vds-menu-items[data-placement~=bottom]){--enter-transform: translateY(0);--exit-transform: translateY(-12px)}@keyframes vds-menu-enter{0%{opacity:0;transform:var(--exit-transform)}to{opacity:1;transform:var(--enter-transform)}}@keyframes vds-menu-exit{0%{opacity:1;transform:var(--enter-transform)}to{opacity:0;transform:var(--exit-transform)}}@media (prefers-reduced-motion){:where(.vds-menu-items){animation:none;opacity:1}}:where(media-menu-portal){display:contents}:where(.vds-menu-items[data-root]:not([data-placement])){position:fixed;left:16px;right:16px;top:unset;bottom:0;max-height:var(--media-sm-menu-portrait-max-height, 40vh);max-height:var(--media-sm-menu-portrait-max-height, 40dvh)}:where(.vds-menu-items[data-root]:not([data-placement])){max-width:480px;margin:0 auto}@media (orientation: landscape) and (pointer: coarse){:where(.vds-menu-items[data-root]:not([data-placement])){max-height:var(--media-sm-menu-landscape-max-height, min(70vh, 400px));max-height:var(--media-sm-menu-landscape-max-height, min(70dvh, 400px))}}:where(.vds-menu[data-submenu] .vds-menu-button){display:flex;align-items:center;justify-content:flex-start}:where(.vds-menu-items[data-submenu]){width:100%}:where(.vds-menu[aria-hidden=true]),:where(.vds-menu-items[data-submenu][aria-hidden=true]){display:none}:where(.vds-menu-item,.vds-radio){position:relative;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:left;width:100%;appearance:none;border:0;border-radius:var(--item-border-radius);box-sizing:border-box;min-height:var(--item-min-height);font-size:var(--font-size);outline:none}.vds-menu-item,.vds-radio{color:var(--text-color);background-color:var(--item-bg);padding:var(--item-padding)}.vds-menu-item:focus-visible,.vds-menu-item[data-focus],.vds-radio:focus-visible,.vds-radio[data-focus]{cursor:pointer;background-color:var(--item-hover-bg)}@media (hover: hover) and (pointer: fine){.vds-menu-item[role]:hover,.vds-radio:hover{cursor:pointer;background-color:var(--item-hover-bg)}}:where(.vds-menu-items[data-submenu]){align-items:flex-start;justify-content:center;flex-direction:column}:where(.vds-menu-item[aria-expanded=true]){font-weight:700;border-radius:0;border-top-left-radius:var(--item-border-radius);border-top-right-radius:var(--item-border-radius)}.vds-menu-item[aria-expanded=true]{border-bottom:var(--top-bar-divider)}:where(.vds-menu-item[aria-expanded=true]){position:sticky;top:calc(-1 * var(--root-padding));left:0;width:100%;z-index:10;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);margin-bottom:4px}.vds-menu-item[aria-expanded=true]{background-color:var(--top-bar-bg)}:where(.vds-menu-item-label){flex:1 0 0%;text-align:start}:where(.vds-menu-item .vds-icon,.vds-radio .vds-icon){--size: var(--item-icon-size);width:var(--size);height:var(--size);margin-right:var(--media-menu-item-icon-spacing, 6px)}:where(.vds-menu-open-icon,.vds-menu-close-icon){--size: var(--media-menu-arrow-icon-size, 18px);width:var(--size);height:var(--size)}:where(.vds-menu-item-hint,.vds-menu-open-icon,.vds-radio-hint){color:var(--text-hint-color);font-size:var(--media-menu-hint-font-size, 13px);font-weight:var(--media-menu-hint-font-weight, 400)}:where(.vds-menu-items .vds-menu-open-icon){margin-right:0}:where(.vds-menu-items) :where(.vds-menu-item-hint,.vds-menu-open-icon){margin-left:auto}:where(.vds-menu-items) :where(.vds-menu-item-hint+.vds-menu-open-icon),:where(.vds-menu-item-hint+media-icon .vds-menu-open-icon),:where(.vds-menu-item-hint+slot>.vds-menu-open-icon){margin-left:2px}:where(.vds-menu-item[aria-hidden=true]),:where(.vds-menu-item[aria-expanded=true] .vds-menu-open-icon){display:none!important}:where(.vds-menu-items) :where(.vds-menu-item[aria-disabled=true],.vds-menu-item[data-disabled]) :where(.vds-menu-open-icon){opacity:0}:where(.vds-menu-close-icon),:where(.vds-menu-item[aria-expanded=true]>.vds-icon){display:none!important}:where(.vds-menu-item[aria-expanded=true] .vds-menu-close-icon){display:inline!important;margin-left:calc(-1 * var(--item-padding) / 2)}:where(.vds-menu-checkbox){--checkbox-width: var(--media-menu-checkbox-width, 40px);--checkbox-height: var(--media-menu-checkbox-height, 18px);--checkbox-top: calc((var(--checkbox-height) - var(--checkbox-diameter)) / 2);--checkbox-diameter: var( --media-menu-checkbox-handle-diameter, calc(var(--checkbox-height) - 2px) );--checkbox-gap: var(--media-menu-checkbox-gap, 2.5px);position:relative;display:inline-block;width:var(--checkbox-width);height:var(--checkbox-height);border-radius:calc(var(--checkbox-height) / 2);transition:.3s all ease-in-out;box-sizing:border-box;cursor:pointer;pointer-events:auto}.vds-menu-checkbox{background-color:var(--checkbox-bg)}:where(.vds-menu-checkbox:focus-visible){outline:none;box-shadow:var(--media-focus-ring)}.vds-menu-checkbox[aria-checked=true]{background-color:var(--checkbox-active-bg)}:where(.vds-menu-checkbox):after{content:"";display:inline-block;width:var(--checkbox-diameter);height:var(--checkbox-diameter);border-radius:calc(var(--checkbox-diameter) / 2);position:absolute;top:var(--checkbox-top);transform:translate(var(--checkbox-gap));transition:.3s all ease-in-out;border:var(--checkbox-handle-border);box-sizing:border-box}.vds-menu-checkbox:after{background-color:var(--checkbox-handle-bg)}:where(.vds-menu-checkbox[aria-checked=true]):after{transform:translate(calc(var(--checkbox-width) - var(--checkbox-diameter) - var(--checkbox-gap)))}@media (prefers-reduced-motion: no-preference){:where(.vds-menu-checkbox[data-active]):after{width:calc(var(--checkbox-width) - calc(var(--checkbox-gap) * 2))}}:where(.vds-menu-checkbox[aria-checked=true][data-active]):after{transform:translate(var(--checkbox-gap))}:where(.vds-menu-items .vds-slider){--media-slider-track-bg: var(--media-menu-slider-track-bg, var(--color-gray-50));--media-slider-track-fill-bg: var(--media-menu-slider-track-fill-bg, var(--color-inverse));--media-slider-height: var(--media-menu-slider-height, 32px);--track-focus-height: var(--track-height) !important}:where(.vds-menu-items .vds-slider-thumb){opacity:1!important}:where(.vds-menu-slider-item.group){flex-direction:column}:where(.vds-menu-slider-title){margin-top:4px}:where(.vds-menu-slider-body){width:100%;display:flex;align-items:center;margin-top:6px}:where(.vds-menu-slider-item .vds-icon){margin:0;color:var(--text-hint-color)}:where(.vds-menu-slider-item[data-min] .vds-icon.down,.vds-menu-slider-item[data-max] .vds-icon.up){color:var(--text-color);animation:.6s ease-in-out vds-slider-icon;transition:all 1.2s ease}@keyframes vds-slider-icon{0%{transform:scale(1)}50%{transform:scale(1.25)}to{transform:scale(1)}}:where(.vds-menu-items .vds-slider-track-fill){transition:opacity .3s ease}:where(.vds-menu-items .vds-slider[data-active] .vds-slider-track-fill){opacity:0}:where(.vds-radio-group){box-sizing:border-box;width:100%;display:flex;flex-direction:column}.vds-radio{cursor:pointer;contain:content;padding-left:calc(var(--item-icon-size) + var(--item-padding))}.vds-radio[aria-checked=true]{padding-left:0}.vds-radio .vds-icon{display:none;color:var(--radio-icon-color)}.vds-radio[aria-checked=true] .vds-icon{display:inline-block;margin-left:6px}:where(.vds-radio-hint){margin-left:auto}.vds-color-picker{width:32px;height:32px;border:0;background-color:transparent;outline:none}.vds-color-picker::-webkit-color-swatch{border-radius:2px}.vds-color-picker::-moz-color-swatch{border-radius:2px}.vds-color-picker:focus-visible::-webkit-color-swatch{box-shadow:var(--media-focus-ring)}.vds-color-picker:focus-visible::-moz-color-swatch{box-shadow:var(--media-focus-ring)}:where(.vds-menu-section){width:100%}:where(.vds-menu-item+.vds-menu-section){margin-top:8px}:where(.vds-menu-section+.vds-menu-section){margin-top:24px}:where(.vds-menu-section:first-child){margin-top:8px}:where(.vds-menu-section:last-child){margin-bottom:8px}:where(.vds-menu-section-title),:where(.vds-menu-slider-title){width:100%;display:flex;align-items:center;justify-content:space-between;color:var(--text-secondary-color);font-size:var(--media-menu-section-header-font-size, 12px);font-weight:var(--media-menu-section-header-font-weight, 500);padding-inline:2px}:where(.vds-menu-section-body){width:100%}:where(.vds-menu-section-title+.vds-menu-section-body){margin-top:var(--media-menu-section-gap, 8px)}.vds-menu-section-body{background-color:var(--section-bg);border:var(--section-border);border-radius:var(--media-menu-section-border-radius, 2px)}:where(.vds-menu-section:not([data-open]) .vds-menu-item:not(:last-child)){border-bottom:var(--section-divider)}:where(.vds-menu-section-body .vds-menu:last-child>.vds-menu-item){border-bottom:unset}.vds-menu-section[data-open],.vds-menu-section[data-open]>.vds-menu-section-body{display:contents!important;background-color:transparent!important}.vds-menu-section[data-open]>.vds-menu-section-title,.vds-menu-section[data-open]>.vds-menu-section-body>:not([data-open]){display:none}:where(.vds-chapters-menu-items){min-width:var(--media-chapters-min-width, var(--media-menu-min-width, 220px))}.vds-chapters-menu-items{padding:var(--media-chapters-padding, 0)}:where(.vds-menu-items:has(.vds-chapters-radio-group[data-thumbnails])){min-width:var(--media-chapters-with-thumbnails-min-width, 300px)}:where(.vds-chapter-radio){border-radius:0}.vds-chapter-radio{border-bottom:var(--chapter-divider);padding:var(--item-padding)}.vds-chapter-radio[aria-checked=true]{padding-left:var(--item-padding)}:where(.vds-chapter-radio:last-child){border-bottom:0}.vds-chapter-radio[aria-checked=true]{background-color:var(--chapter-active-bg);border-left:var(--chapter-active-border-left)}:where(.vds-chapter-radio[aria-checked=true]):after{content:" ";width:var(--progress);height:var(--media-chapters-progress-height, 4px);position:absolute;bottom:0;left:0}.vds-chapter-radio[aria-checked=true]:after{border-radius:var(--media-chapters-progress-border-radius, 0);background-color:var(--chapter-progress-bg)}.vds-chapters-radio-group :where(.vds-thumbnail){margin-right:var(--media-chapters-thumbnail-gap, 12px);flex-shrink:0;min-width:var(--media-chapters-thumbnail-min-width, 100px);min-height:var(--media-chapters-thumbnail-min-height, 56px);max-width:var(--media-chapters-thumbnail-max-width, 120px);max-height:var(--media-chapters-thumbnail-max-height, 68px)}.vds-chapters-radio-group .vds-thumbnail{border:var(--media-chapters-thumbnail-border, 0)}:where(.vds-chapters-radio-group .vds-chapter-radio-label){color:var(--text-secondary-color);font-size:var(--font-size);font-weight:var(--font-weight);white-space:nowrap}:where(.vds-chapter-radio[aria-checked=true] .vds-chapter-radio-label){color:var(--text-color)}:where(.vds-chapters-radio-group .vds-chapter-radio-start-time){display:inline-block;letter-spacing:var(--media-chapters-start-time-letter-spacing, .4px);border-radius:var(--media-chapters-start-time-border-radius, 2px);font-size:var(--chapter-time-font-size);font-weight:var(--chapter-time-font-weight);margin-top:var(--chapter-time-gap)}.vds-chapters-radio-group .vds-chapter-radio-start-time{color:var(--text-secondary-color);background-color:var(--section-bg);padding:var(--media-chapters-start-time-padding, 1px 4px)}:where(.vds-chapters-radio-group .vds-chapter-radio-duration){color:var(--text-hint-color);font-size:var(--chapter-time-font-size);font-weight:var(--chapter-time-font-weight);margin-top:var(--chapter-time-gap)}.vds-chapters-radio-group .vds-chapter-radio-duration{background-color:var(--chapter-duration-bg);border-radius:var(--media-chapters-duration-border-radius, 2px)}.vds-chapters-radio-group:not([data-thumbnails]) :where(.vds-thumbnail,media-thumbnail){display:none}:where(.vds-chapter-radio-content){display:flex;align-items:flex-start;flex-direction:column}:where(.vds-chapters-radio-group:not([data-thumbnails]) .vds-chapter-radio-content){width:100%;flex-direction:row;display:flex;flex-wrap:wrap;align-items:center}:where(.vds-chapters-radio-group:not([data-thumbnails]) .vds-chapter-radio-start-time){margin-top:0;margin-left:auto}:where(.vds-chapters-radio-group:not([data-thumbnails]) .vds-chapter-radio-duration){margin-top:4px;flex-basis:100%}.vds-menu-items[data-keyboard] .vds-chapters-radio-group:focus-within{padding:var(--media-chapters-focus-padding, 4px)}:where(.vds-poster){display:block;contain:content;position:absolute;top:50%;transform:translateY(-50%);left:0;opacity:0;width:100%;height:100%;z-index:1;border:0;pointer-events:none;box-sizing:border-box;transition:opacity .2s ease-out;background-color:var(--media-poster-bg, black)}:where(.vds-poster img){object-fit:inherit;object-position:inherit;pointer-events:none;user-select:none;-webkit-user-select:none;box-sizing:border-box}.vds-poster :where(img){border:0;width:100%;height:100%;object-fit:contain}:where(.vds-poster[data-hidden]){display:none}:where(.vds-poster[data-visible]){opacity:1}.vds-poster:not(:defined),.vds-poster img:not([src]){display:none}:where(.vds-slider){--width: var(--media-slider-width, 100%);--height: var(--media-slider-height, 48px);--thumb-size: var(--media-slider-thumb-size, 15px);--thumb-focus-size: var(--media-slider-focused-thumb-size, calc(var(--thumb-size) * 1.1));--track-width: var(--media-slider-track-width, 100%);--track-height: var(--media-slider-track-height, 5px);--track-focus-width: var(--media-slider-focused-track-width, var(--track-width));--track-focus-height: var(--media-slider-focused-track-height, calc(var(--track-height) * 1.25));display:inline-flex;align-items:center;width:var(--width);height:var(--height);margin:0 calc(var(--thumb-size) / 2);position:relative;contain:layout style;outline:none;pointer-events:auto;cursor:pointer;user-select:none;touch-action:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}:where(.vds-slider[aria-hidden=true]){display:none!important}:where(.vds-slider[aria-disabled=true]){cursor:unset}:where(.vds-slider:focus){outline:none}:where(.vds-slider:not([data-chapters])[data-focus],.vds-slider:not([data-chapters]):focus-visible) :where(.vds-slider-track){box-shadow:var(--media-focus-ring)}:where(.vds-slider .vds-slider-track){z-index:0;position:absolute;width:var(--track-width);height:var(--track-height);top:50%;left:0;border-radius:var(--media-slider-track-border-radius, 2px);transform:translateY(-50%) translateZ(0);background-color:var(--media-slider-track-bg, rgb(255 255 255 / .3));contain:strict}:where(.vds-slider[data-focus],.vds-slider:focus-visible) :where(.vds-slider-track){outline-offset:var(--thumb-size)}:where(.vds-slider:not([data-chapters])[data-active] .vds-slider-track){width:var(--track-focus-width);height:var(--track-focus-height)}:where(.vds-slider .vds-slider-track-fill){z-index:2;background-color:var(--media-slider-track-fill-bg, var(--media-brand));width:var(--slider-fill, 0%);will-change:width}:where(.vds-slider .vds-slider-thumb){position:absolute;top:50%;left:var(--slider-fill);opacity:0;contain:layout size style;width:var(--thumb-size);height:var(--thumb-size);border:var(--media-slider-thumb-border, 1px solid #cacaca);border-radius:var(--media-slider-thumb-border-radius, 9999px);background-color:var(--media-slider-thumb-bg, #fff);transform:translate(-50%,-50%) translateZ(0);transition:opacity .15s ease-in;pointer-events:none;will-change:left;z-index:2}:where(.vds-slider[data-dragging],.vds-slider[data-focus],.vds-slider:focus-visible) :where(.vds-slider-thumb){box-shadow:var(--media-slider-focused-thumb-shadow, 0 0 0 4px hsla(0, 0%, 100%, .4))}:where(.vds-slider[data-active] .vds-slider-thumb){opacity:1;transition:var(--media-slider-thumb-transition, opacity .2s ease-in, box-shadow .2s ease)}:where(.vds-slider[data-dragging] .vds-slider-thumb){width:var(--thumb-focus-size);height:var(--thumb-focus-size)}:where(.vds-slider-value){display:inline-block;contain:content;font-size:14px;font-family:var(--media-font-family, sans-serif)}:where(.vds-slider-thumbnail){display:block;contain:content;box-sizing:border-box}:where(.vds-slider-video){background-color:#000;box-sizing:border-box;contain:content;display:inline-block;border:var(--media-thumbnail-border, 1px solid white)}:where(.vds-slider-video video){display:block;height:auto;width:156px}:where(.vds-slider-video[data-loading]){opacity:0}:where(.vds-slider-video[data-hidden],.vds-slider-video[data-hidden] video){display:none;width:0px}:where(.vds-slider .vds-slider-preview){display:flex;flex-direction:column;align-items:center;opacity:0;background-color:var(--media-slider-preview-bg);border-radius:var(--media-slider-preview-border-radius, 2px);pointer-events:none;transition:opacity .2s ease-out;will-change:left,opacity;contain:layout paint style}:where(.vds-slider-preview[data-visible]){opacity:1;transition:opacity .2s ease-in}.vds-slider-value{background-color:var(--media-slider-value-bg, black);border-radius:var(--media-slider-value-border-radius, 2px);border:var(--media-slider-value-border);color:var(--media-slider-value-color, white);padding:var(--media-slider-value-padding, 1px 10px)}:where(.vds-slider-video:not([data-hidden])+.vds-slider-chapter-title,.vds-slider-thumbnail:not([data-hidden])+.vds-slider-chapter-title){margin-top:var(--media-slider-chapter-title-gap, 6px)}:where(.vds-slider-video:not([data-hidden])+.vds-slider-value,.vds-slider-thumbnail:not([data-hidden])+.vds-slider-value,.vds-slider-chapter-title+.vds-slider-value){margin-top:var(--media-slider-value-gap, 2px)}:where(.vds-slider[aria-orientation=vertical]){--width: var(--media-slider-width, 48px);--height: var(--media-slider-height, 100%);--track-width: var(--media-slider-track-width, 4px);--track-height: var(--media-slider-track-height, 100%);--track-focus-width: var(--media-slider-focused-track-width, calc(var(--track-width) * 1.25));--track-focus-height: var(--media-slider-focused-track-height, var(--track-height));margin:calc(var(--thumb-size) / 2) 0}:where(.vds-slider[aria-orientation=vertical] .vds-slider-track){top:unset;bottom:0;left:50%;transform:translate(-50%) translateZ(0)}:where(.vds-slider[aria-orientation=vertical] .vds-slider-track-fill){width:var(--track-width);height:var(--slider-fill);will-change:height;transform:translate(-50%) translateZ(0)}:where(.vds-slider[aria-orientation=vertical] .vds-slider-progress){top:unset;bottom:0;width:var(--track-width);height:var(--slider-progress, 0%);will-change:height}:where(.vds-slider[aria-orientation=vertical] .vds-slider-thumb){top:unset;bottom:var(--slider-fill);left:50%;will-change:bottom;transform:translate(-50%,50%) translateZ(0)}:where(.vds-slider[aria-orientation=vertical] .vds-slider-preview){will-change:bottom,opacity}:where([data-live] .vds-time-slider .vds-slider-track-fill){background-color:var(--media-slider-track-fill-live-bg, #dc2626)}:where(.vds-time-slider .vds-slider-progress){z-index:1;left:0;width:var(--slider-progress, 0%);will-change:width;background-color:var(--media-slider-track-progress-bg, rgb(255 255 255 / .5))}:where([data-media-player]:not([data-can-play]) .vds-time-slider .vds-slider-value){display:none}:where(.vds-slider-steps){display:flex;align-items:center;justify-content:space-between;width:100%;height:100%;position:absolute;top:0;left:0}:where(.vds-slider-step){width:var(--media-slider-step-width, 2.5px);height:calc(var(--track-height) + 1px);background-color:var(--media-slider-step-color, rgb(124, 124, 124));opacity:0;transition:opacity .3s ease}:where(.vds-slider[data-active] .vds-slider-step){opacity:1}:where(.vds-time-slider .vds-slider-chapters){position:relative;display:flex;align-items:center;width:100%;height:100%;contain:layout style;border-radius:var(--media-slider-track-border-radius, 1px)}:where(.vds-slider[data-focus],.vds-slider:focus-visible) :where(.vds-slider-chapters){box-shadow:var(--media-focus-ring);height:var(--track-height)}:where(.vds-time-slider .vds-slider-chapter){margin-right:2px}:where(.vds-time-slider .vds-slider-chapter:last-child){margin-right:0}:where(.vds-time-slider .vds-slider-chapter){position:relative;display:flex;align-items:center;width:100%;height:100%;will-change:height,transform;contain:layout style;border-radius:var(--media-slider-track-border-radius, 1px)}:where(.vds-time-slider .vds-slider-chapter .vds-slider-track-fill){width:var(--chapter-fill, 0%);will-change:width}:where(.vds-time-slider .vds-slider-chapter .vds-slider-progress){width:var(--chapter-progress, 0%);will-change:width}@media (hover: hover) and (pointer: fine){:where(.vds-time-slider:hover .vds-slider-chapters){contain:strict}:where(.vds-time-slider .vds-slider-chapter:hover:not(:only-of-type)){transform:var(--media-slider-chapter-hover-transform, scaleY(2));transition:var( --media-slider-chapter-hover-transition, transform .1s cubic-bezier(.4, 0, 1, 1) )}}:where(.vds-time-slider .vds-slider-chapter-title){font-family:var(--media-font-family, sans-serif);font-size:var(--media-slider-chapter-title-font-size, 14px);color:var(--media-slider-chapter-title-color, #f5f5f5);background-color:var(--media-slider-chapter-title-bg)}:where(.vds-thumbnail){--min-width: var(--media-thumbnail-min-width, 140px);--max-width: var(--media-thumbnail-max-width, 180px);--aspect-ratio: var(--media-thumbnail-aspect-ratio, var(--thumbnail-aspect-ratio));display:block;width:var(--thumbnail-width);height:var(--thumbnail-height);background-color:var(--media-thumbnail-bg, black);contain:strict;overflow:hidden;box-sizing:border-box;min-width:var(--min-width);min-height:var(--media-thumbnail-min-height, calc(var(--min-width) / var(--aspect-ratio)));max-width:var(--max-width);max-height:var(--media-thumbnail-max-height, calc(var(--max-width) / var(--aspect-ratio)))}.vds-thumbnail{border:var(--media-thumbnail-border, 1px solid white)}:where(.vds-thumbnail img){min-width:unset!important;max-width:unset!important;will-change:width,height,transform}:where(.vds-thumbnail[data-loading] img){opacity:0}:where(.vds-thumbnail[aria-hidden=true]){display:none!important}:where(.vds-time-group){display:flex;align-items:center}.vds-time-divider{margin:0 var(--media-time-divider-gap, 2.5px);color:var(--media-time-divider-color, #e0e0e0)}:where(.vds-time){display:inline-block;contain:content;font-size:var(--media-time-font-size, 15px);font-weight:var(--media-time-font-weight, 400);font-family:var(--media-font-family, sans-serif);border-radius:var(--media-time-border-radius, 2px);letter-spacing:var(--media-time-letter-spacing, .025em)}.vds-time{outline:0;color:var(--media-time-color, var(--default-color));background-color:var(--media-time-bg);border:var(--media-time-border);padding:var(--media-time-padding, 2px)}:where(.vds-time:focus-visible){box-shadow:var(--media-focus-ring)}.light .vds-time{--default-color: rgb(10 10 10)}.dark .vds-time{--default-color: #f5f5f5}:where(.vds-tooltip,media-tooltip){display:contents}:where(.vds-tooltip-content){display:inline-block;box-sizing:border-box;font-family:var(--media-font-family, sans-serif);font-size:var(--media-tooltip-font-size, 13px);font-weight:var(--media-tooltip-font-weight, 500);opacity:0;pointer-events:none;white-space:nowrap;z-index:10;will-change:transform,opacity}.vds-tooltip-content{border-radius:var(--media-tooltip-border-radius, 2px);background-color:var(--media-tooltip-bg-color, var(--default-bg));border:var(--media-tooltip-border, var(--default-border));color:var(--media-tooltip-color, var(--default-color));padding:var(--media-tooltip-padding, 2px 8px)}.light .vds-tooltip-content{--default-color: #1a1a1a;--default-bg: white;--default-border: 1px solid rgb(0 0 0 / .2)}.dark .vds-tooltip-content{--default-color: #f5f5f5;--default-bg: black;--default-border: 1px solid rgb(255 255 255 / .1)}:where(.vds-menu .vds-menu-button[role=button][data-pressed] .vds-tooltip-content){opacity:0;display:none}:where(.vds-tooltip-content){--enter-transform: translateY(0px) scale(1);--exit-transform: translateY(12px) scale(.8)}:where(.vds-tooltip-content:not([data-visible])){animation:var(--media-tooltip-exit-animation, vds-tooltip-exit .2s ease-out)}:where(.vds-tooltip-content[data-visible]){animation:var(--media-tooltip-enter-animation, vds-tooltip-enter .2s ease-in);animation-fill-mode:forwards}:where(.vds-tooltip-content[data-placement~=bottom]){--enter-transform: translateY(0) scale(1);--exit-transform: translateY(-12px) scale(.8)}:where(.vds-tooltip-content[data-placement~=left]){--enter-transform: translateX(0) scale(1);--exit-transform: translateX(12px) scale(.8)}:where(.vds-tooltip-content[data-placement~=right]){--enter-transform: translateX(0) scale(1);--exit-transform: translateX(-12px) scale(.8)}@keyframes vds-tooltip-enter{0%{opacity:0;transform:var(--exit-transform)}to{opacity:1;transform:var(--enter-transform)}}@keyframes vds-tooltip-exit{0%{opacity:1;transform:var(--enter-transform)}to{opacity:0;transform:var(--exit-transform)}}@media (prefers-reduced-motion){:where(.vds-tooltip-content){animation:none}:where(.vds-tooltip-content[data-visible]){opacity:1}}[data-media-player]:not([data-paused]) .vds-play-tooltip-text,[data-media-player][data-paused] .vds-pause-tooltip-text,[data-media-player][data-pip] .vds-pip-enter-tooltip-text,[data-media-player]:not([data-pip]) .vds-pip-exit-tooltip-text,[data-media-player][data-fullscreen] .vds-fs-enter-tooltip-text,[data-media-player]:not([data-fullscreen]) .vds-fs-exit-tooltip-text,[data-media-player]:not([data-captions]) .vds-cc-on-tooltip-text,[data-media-player][data-captions] .vds-cc-off-tooltip-text,[data-media-player]:not([data-muted]) .vds-mute-tooltip-text,[data-media-player][data-muted] .vds-unmute-tooltip-text{display:none}[data-media-player] .vds-video-layout:not([data-match]){display:none!important}[data-media-player][data-layout=video]{background-color:var(--video-bg, black)}[data-media-player][data-layout=video]:not([data-fullscreen]){border-radius:var(--video-border-radius, 6px);border:var(--video-border, 1px solid rgb(255 255 255 / .1))}:where(.vds-video-layout){--media-brand: var(--video-brand, #f5f5f5);--media-font-family: var(--video-font-family, sans-serif);--media-controls-color: var(--video-controls-color, #f5f5f5);--media-tooltip-y-offset: 6px;--media-menu-y-offset: 6px;--media-focus-ring-color: var(--video-focus-ring-color, rgb(78 156 246));--media-focus-ring: var(--video-focus-ring, 0 0 0 3px var(--media-focus-ring-color));color:var(--video-controls-color, #f5f5f5);display:contents}:where([data-media-player][data-focus]:not([data-playing]) .vds-video-layout .vds-controls){border-radius:var(--video-border-radius, 6px);box-shadow:var(--media-focus-ring)}:where(.vds-video-layout .vds-controls[data-visible]){border-radius:var(--video-border-radius, 6px);background-image:linear-gradient(to top,rgb(0 0 0 / .6),10%,transparent,95%,rgb(0 0 0 / .3))}.vds-video-layout .vds-controls-group{align-items:center;display:flex;pointer-events:auto;z-index:0;padding:4px 6px}.vds-video-layout .vds-controls-group:first-child{z-index:50}.vds-video-layout .vds-controls-group:nth-last-child(2){padding:0 12px;z-index:11;margin-bottom:-16px}.vds-video-layout:not([data-sm]) .vds-controls-group:last-child{--media-menu-y-offset: 26px;--media-tooltip-y-offset: 26px;--media-slider-preview-offset: 26px;z-index:10}:where(.vds-video-layout .vds-button){margin-right:2.5px}:where(.vds-video-layout[data-sm] .vds-chapter-title){font-size:var(--video-sm-chapter-title-font-size, 15px)}:where([data-fullscreen] .vds-video-layout .vds-chapter-title){font-size:var(--video-fullscreen-chapter-title-font-size, 16px)}:where(.vds-video-layout:not([data-sm]) .vds-mute-button){margin-left:-2.5px;margin-right:-5px}:where(.vds-video-layout[data-sm]){--media-button-size: var(--video-sm-button-size, 36px)}:where(.vds-video-layout .vds-time-slider){--media-slider-height: 45px;flex-grow:0}:where(.vds-video-layout .vds-slider-thumbnail){--media-thumbnail-border: var(--video-slider-thumbnail-border, 1px solid #f5f5f5);border-radius:var(--video-slider-thumbnail-border-radius, 2px)}.vds-video-layout .vds-time-slider .vds-slider-value{background-color:var(--video-time-bg, unset);text-shadow:-1px -1px 0 #333333,1px -1px 0 #333333,-1px 1px 0 #333333,1px 1px 0 #333333}:where(.vds-video-layout[data-sm] .vds-time){text-shadow:unset}:where(.vds-video-layout[data-lg] .vds-volume){--gap: var(--video-volume-gap, 10px);display:contents}:where(.vds-video-layout[data-lg] .vds-volume-popup){display:contents}:where(.vds-video-layout[data-lg] .vds-volume-slider){margin:0;max-width:0;transition:all .15s ease}:where(.vds-video-layout[data-lg] .vds-volume[data-active] .vds-volume-slider),:where(.vds-video-layout[data-lg] .vds-volume:has([data-active]) .vds-volume-slider){margin-left:var(--gap);opacity:1;visibility:visible;max-width:var(--video-volume-slider-max-width, 72px)}.vds-video-layout[data-lg] .vds-volume-slider:after{content:"";position:fixed;top:0;left:calc(-1 * var(--gap));width:var(--gap);height:100%;z-index:1;pointer-events:auto}:where(.vds-video-layout[data-sm] .vds-volume){--media-slider-height: var(--video-volume-height, 96px);--media-slider-preview-offset: calc(-200% - 6px) ;--gap: var(--video-volume-gap, 10px);position:relative;display:flex;align-items:center;justify-content:center}:where(.vds-video-layout[data-sm] .vds-volume-popup){display:block;position:absolute;top:calc(100% + var(--gap));left:50%;opacity:0;transform:translate(-50%);transition:opacity .15s ease-out,visibility .15s ease-out;border-radius:var(--video-volume-border-radius, 8px);filter:var(--media-volume-filter, drop-shadow(0 1px 1px rgb(0 0 0 / .05)));visibility:hidden}.vds-video-layout[data-sm] .vds-mute-button:after{content:"";position:fixed;bottom:calc(-1 * var(--gap));right:0;width:100%;height:var(--gap);z-index:1;pointer-events:auto}.vds-video-layout .vds-volume-popup{background-color:var(--video-volume-bg, var(--media-menu-bg, var(--default-bg)));border:var(--video-volume-border, var(--default-border))}.light .vds-video-layout .vds-volume-popup,.vds-video-layout.light .vds-volume-popup{--default-bg: rgb(250 250 250);--default-border: 1px solid rgb(10 10 10 / .1)}.dark .vds-video-layout .vds-volume-popup,.vds-video-layout.dark .vds-volume-popup{--default-bg: rgb(10 10 10);--default-border: 1px solid rgb(255 255 255 / .1)}:where(.vds-video-layout[data-sm] .vds-volume[data-active] .vds-volume-popup),:where(.vds-video-layout[data-sm] .vds-volume:has([data-active]) .vds-volume-popup){transition:opacity .15s ease-in,visibility .15s ease-in;opacity:1;visibility:visible}:where(.vds-video-layout[data-sm] .vds-volume[data-active] .vds-tooltip-content){display:none!important}:where(.vds-video-layout .vds-time[data-type=current]){margin-right:2px}:where(.vds-video-layout .vds-time[data-type=current][remainder]){margin-left:2px}.vds-video-layout .vds-time{--default-color: #f5f5f5 !important}:where([data-preview] .vds-video-layout .vds-captions){opacity:0}:where(.vds-video-layout .vds-captions){z-index:10;transition:var(--video-captions-transition, bottom .3s ease-in-out)}@media (min-width: 980px){:where([data-fullscreen] .vds-video-layout .vds-captions){bottom:var(--video-lg-fullscreen-captions-offset, 54px)}}:where([data-media-player][data-controls] .vds-video-layout .vds-captions){bottom:var(--video-captions-offset, 78px)}:where([data-media-player][data-controls] .vds-video-layout[data-sm] .vds-captions){bottom:var(--video-sm-captions-offset, 48px)}:where(.vds-video-layout .vds-time-slider .vds-slider-chapter-title){width:100%;text-align:center;text-shadow:-1px -1px 0 #212121,1px -1px 0 #212121,-1px 1px 0 #212121,1px 1px 0 #212121}:where(.vds-video-layout .vds-gesture){top:0;left:0;width:100%;height:100%;z-index:0}:where(.vds-video-layout .vds-gesture[action="seek:-10"]){width:var(--video-gesture-seek-width, 20%);z-index:1}:where(.vds-video-layout .vds-gesture[action="seek:10"]){left:unset;right:0;width:var(--video-gesture-seek-width, 20%);z-index:1}@media (pointer: coarse){:where(.vds-video-layout .vds-gesture[action="toggle:paused"]){display:none}}@media not (pointer: coarse){:where([data-media-player] .vds-video-layout .vds-gesture[action="toggle:controls"]){display:none}}:where(.vds-video-layout .vds-live-button){margin-left:12px}:where(.vds-video-layout:not([data-sm]) .vds-time-group){margin-left:10px}:where(.vds-video-layout[data-sm] .vds-time){font-size:var(--video-sm-time-font-size, 14px)}:where([data-fullscreen] .vds-video-layout .vds-time){font-size:var(--video-fullscreen-time-font-size, 16px)}:where(.vds-video-layout .vds-load-container){position:absolute;inset:0;width:100%;height:100%;display:none;align-items:center;justify-content:center;pointer-events:none;z-index:99}:where([data-media-player][data-load=play]:not([data-started]) .vds-video-layout[data-match] .vds-load-container){display:flex}:where(.vds-video-layout .vds-load-container .vds-play-button){--size: var(--video-load-button-size, 56px);--color: var(--video-load-button-color, rgb(0 0 0 / .8));--bg-color: var(--video-load-button-bg, var(--media-brand));--media-button-hover-transform: 0;--media-button-border: var(--video-load-button-border, var(--color));--media-button-hover-bg: var(--video-load-button-bg, var(--media-brand));width:var(--size);height:var(--size);pointer-events:auto;margin-bottom:2px;overflow:hidden}.vds-video-layout .vds-load-container .vds-play-button{border-radius:var(--video-load-button-border-radius, 100%);color:var(--color)}.vds-video-layout .vds-load-container .vds-play-button{background-color:var(--bg-color)}:where(.vds-video-layout[data-sm] .vds-load-container .vds-play-button){--size: var(--video-sm-load-button-size, 48px);--media-button-hover-transform: translateY(0%);width:var(--size);height:var(--size);transform:translateY(0)}:where(.vds-video-layout[data-sm] .vds-controls-group:nth-last-child(2)){pointer-events:none}:where(.vds-video-layout[data-sm] .vds-controls-group:last-child){z-index:2;margin-top:-2.5px;margin-bottom:-6px}:where([data-fullscreen] .vds-video-layout[data-sm] .vds-controls-group:last-child){margin-bottom:0}.vds-video-layout[data-sm] .vds-controls-group{padding:2px}:where(.vds-video-layout[data-sm]) :where(.vds-button,.vds-slider:not(.vds-time-slider),.vds-time,.vds-time-divider,.vds-chapter-title){transition:opacity .15s ease}:where([data-media-player]:not([data-started]) .vds-video-layout[data-sm]) :where(.vds-button .vds-slider,.vds-time-group){opacity:0;visibility:hidden}:where(.vds-video-layout[data-sm] .vds-time-slider){transition:transform .1s linear}@media (pointer: coarse){:where([data-preview] .vds-video-layout:not([data-no-scrub-gesture])) :where(.vds-button,.vds-slider:not(.vds-time-slider),.vds-time,.vds-chapter-title,.vds-time-divider,.vds-captions,.vds-live-button){opacity:0}:where([data-preview] .vds-video-layout:not([data-no-scrub-gesture]) .vds-time-slider){--track-height: var(--video-sm-slider-focus-track-height, 12px);transform:translateY(-6px);transition:transform .1s linear}}:where(.vds-video-layout[data-sm] .vds-controls .vds-play-button){--size: var(--video-sm-play-button-size, 45px);--media-button-hover-transform: translateY(25%);width:var(--size);height:var(--size);transform:translateY(25%);border-radius:100%;pointer-events:auto;margin-bottom:2px;overflow:hidden}.vds-video-layout[data-sm] .vds-controls .vds-play-button{background-color:var(--video-sm-play-button-bg, rgba(0 0 0 / .6))}:where([data-media-player]:not([data-started]) .vds-video-layout[data-sm] .vds-controls-group:not(:nth-child(3))){opacity:0;visibility:hidden}:where(.vds-video-layout[data-sm] .vds-buffering-indicator){--media-buffering-size: 64px;transform:translate(-2px,-4px)}:where(.vds-video-layout .vds-start-duration .vds-time){position:absolute;right:8px;bottom:8px;margin-right:8px;margin-bottom:8px;z-index:10}.vds-video-layout .vds-start-duration .vds-time{padding:var(--video-sm-start-duration-padding, 3px 6px);color:var(--video-sm-start-duration-color, var(--video-controls-color));background-color:var(--video-sm-start-duration-bg, rgba(0 0 0 / .64))}:where([data-started] .vds-video-layout .vds-start-duration .vds-time){display:none}:where([data-media-player]:not([data-can-play]) .vds-video-layout .vds-start-duration .vds-time){opacity:0}:where(.vds-video-layout[data-sm] .vds-time[data-type=current]){margin-left:8px}:where([data-fullscreen] .vds-video-layout .vds-controls-group:nth-last-child(2)){margin-bottom:-16px}@media (orientation: portrait){:where([data-fullscreen] .vds-video-layout .vds-captions){bottom:30lvh;bottom:10dvh}}@media (orientation: landscape){:where([data-fullscreen] .vds-video-layout .vds-controls-group:nth-last-child(2)){margin-bottom:-12px}}.dropzone-youtube-player:not([data-fullscreen]) .vds-play-button,.dropzone-youtube-player[data-fullscreen=false] .vds-play-button{display:none}.dropzone-youtube-player:not([data-fullscreen]) .vds-buffering-indicator,.dropzone-youtube-player[data-fullscreen=false] .vds-buffering-indicator,.dropzone-youtube-player:not([data-fullscreen]) .vds-loading-indicator,.dropzone-youtube-player[data-fullscreen=false] .vds-loading-indicator,.dropzone-youtube-player:not([data-fullscreen]) .vds-spinner,.dropzone-youtube-player[data-fullscreen=false] .vds-spinner{display:none}
1
+ .dropzone-youtube-player:not([data-fullscreen]) .vds-play-button,.dropzone-youtube-player[data-fullscreen=false] .vds-play-button{display:none}.dropzone-youtube-player:not([data-fullscreen]) .vds-buffering-indicator,.dropzone-youtube-player[data-fullscreen=false] .vds-buffering-indicator,.dropzone-youtube-player:not([data-fullscreen]) .vds-loading-indicator,.dropzone-youtube-player[data-fullscreen=false] .vds-loading-indicator,.dropzone-youtube-player:not([data-fullscreen]) .vds-spinner,.dropzone-youtube-player[data-fullscreen=false] .vds-spinner{display:none}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Wrappers.js","sources":["../../../../.storybook/Wrappers.tsx"],"sourcesContent":["import { PropsWithChildren } from \"react\";\r\n\r\nexport const MoreWrapper = (props: PropsWithChildren) => (\r\n <div\r\n style={{\r\n position: 'relative',\r\n padding: '24px 32px',\r\n display: 'flex',\r\n gap: '32px',\r\n }}\r\n >\r\n {props.children}\r\n </div>\r\n)\r\n\r\nexport const DashedWrapper = (props: PropsWithChildren) => {\r\n return (\r\n <div\r\n style={{\r\n padding: '0px 20px',\r\n display: 'flex',\r\n gap: '32px',\r\n alignItems: 'flex-start',\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n border: '2px dashed rgba(139, 92, 246, 0.7)',\r\n borderRadius: '24px',\r\n padding: '24px 32px',\r\n display: 'flex',\r\n gap: '32px',\r\n }}\r\n >\r\n {props.children}\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"names":["DashedWrapper","props","jsx"],"mappings":";AAeO,MAAMA,IAAgB,CAACC,MAE1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,KAAK;AAAA,MACL,YAAY;AAAA,IAAA;AAAA,IAGd,UAAA,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,SAAS;AAAA,UACT,SAAS;AAAA,UACT,KAAK;AAAA,QAAA;AAAA,QAGN,UAAAD,EAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACT;AAAA;"}