@epam/ai-dial-attachment-input 1.1.0-dev.49 → 1.1.0-dev.492

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.
Files changed (34) hide show
  1. package/components/AttachmentCard/AttachmentCard.d.ts.map +1 -1
  2. package/components/AttachmentCard/Attachments/Actions.d.ts +3 -5
  3. package/components/AttachmentCard/Attachments/Actions.d.ts.map +1 -1
  4. package/components/AttachmentCard/Attachments/File.d.ts.map +1 -1
  5. package/components/AttachmentCard/Attachments/Image.d.ts +2 -0
  6. package/components/AttachmentCard/Attachments/Image.d.ts.map +1 -1
  7. package/components/AttachmentGroup/AttachmentGroup.d.ts +1 -1
  8. package/components/AttachmentGroup/AttachmentGroup.d.ts.map +1 -1
  9. package/components/AttachmentTray/AttachmentTray.d.ts.map +1 -1
  10. package/constants/attachment-group.d.ts +1 -3
  11. package/constants/attachment-group.d.ts.map +1 -1
  12. package/hooks/useClipboardPaste.d.ts +1 -1
  13. package/hooks/useClipboardPaste.d.ts.map +1 -1
  14. package/index.css +1 -1
  15. package/index.d.ts +4 -5
  16. package/index.d.ts.map +1 -1
  17. package/index.js +355 -435
  18. package/models/attachment-card.d.ts +11 -9
  19. package/models/attachment-card.d.ts.map +1 -1
  20. package/models/attachment-file-row.d.ts +8 -0
  21. package/models/attachment-file-row.d.ts.map +1 -1
  22. package/models/attachment-group.d.ts +2 -24
  23. package/models/attachment-group.d.ts.map +1 -1
  24. package/models/attachment-tray.d.ts +2 -0
  25. package/models/attachment-tray.d.ts.map +1 -1
  26. package/package.json +8 -6
  27. package/utils/attachment.d.ts +1 -4
  28. package/utils/attachment.d.ts.map +1 -1
  29. package/components/AttachmentCard/Attachments/Audio.d.ts +0 -20
  30. package/components/AttachmentCard/Attachments/Audio.d.ts.map +0 -1
  31. package/components/AttachmentMoreTile/AttachmentMoreTile.d.ts +0 -5
  32. package/components/AttachmentMoreTile/AttachmentMoreTile.d.ts.map +0 -1
  33. package/models/attachment-more-tile.d.ts +0 -54
  34. package/models/attachment-more-tile.d.ts.map +0 -1
package/index.js CHANGED
@@ -1,26 +1,31 @@
1
- import { AttachmentErrorReason as e, AttachmentType as t, Highlight as n, MIME_TYPE_EXT_MAP as r, RequestStatus as i, buildCssVars as a, mergeClasses as o } from "@epam/ai-dial-chat-shared";
2
- import { useCallback as s, useEffect as c, useId as l, useMemo as u, useRef as d, useState as f } from "react";
3
- import { IconChevronUp as p, IconClipboard as m, IconDownload as h, IconExternalLink as g, IconFile as _, IconFileDescription as v, IconFileTypeBmp as y, IconFileTypeCss as b, IconFileTypeCsv as x, IconFileTypeDoc as S, IconFileTypeDocx as C, IconFileTypeHtml as w, IconFileTypeJpg as T, IconFileTypeJs as E, IconFileTypeJsx as D, IconFileTypePdf as O, IconFileTypePhp as k, IconFileTypePng as A, IconFileTypePpt as j, IconFileTypeRs as M, IconFileTypeSql as N, IconFileTypeSvg as P, IconFileTypeTs as F, IconFileTypeTsx as I, IconFileTypeTxt as L, IconFileTypeVue as R, IconFileTypeXls as z, IconFileTypeXml as B, IconFileTypeZip as V, IconFileX as ee, IconMusic as te, IconPaperclip as H, IconPhoto as U, IconReload as ne, IconTerminal2 as re, IconVideo as ie, IconX as ae } from "@tabler/icons-react";
4
- import { DIAL_ICON_SIZE as W, DialGhostIconButton as oe, DialSkeleton as se, DialSkeletonVariant as ce, ElementSize as le } from "@epam/ai-dial-ui-kit";
5
- import { Fragment as G, jsx as K, jsxs as q } from "react/jsx-runtime";
6
- //#region src/constants/attachment-group.ts
7
- var ue = 5, de = 4, fe = "flex size-[84px] items-center justify-center rounded-xl border", J = /* @__PURE__ */ function(e) {
8
- return e.None = "none", e.AllVisible = "all-visible", e.Collapsed = "collapsed", e;
9
- }({}), pe = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, me = (e) => {
1
+ import { AttachmentErrorReason as e, AttachmentType as t, MIME_TYPE_EXT_MAP as n, RequestStatus as r, buildCssVars as i, mergeClasses as a } from "@epam/ai-dial-chat-shared";
2
+ import { useCallback as o, useEffect as s, useId as c, useMemo as l, useRef as u, useState as d } from "react";
3
+ import { IconClipboard as f, IconDownload as p, IconExternalLink as m, IconFile as h, IconFileDescription as g, IconFileTypeBmp as _, IconFileTypeCss as v, IconFileTypeCsv as y, IconFileTypeDoc as b, IconFileTypeDocx as x, IconFileTypeHtml as S, IconFileTypeJpg as C, IconFileTypeJs as w, IconFileTypeJsx as T, IconFileTypePdf as E, IconFileTypePhp as D, IconFileTypePng as O, IconFileTypePpt as k, IconFileTypeRs as A, IconFileTypeSql as j, IconFileTypeSvg as M, IconFileTypeTs as N, IconFileTypeTsx as P, IconFileTypeTxt as F, IconFileTypeVue as I, IconFileTypeXls as L, IconFileTypeXml as R, IconFileTypeZip as ee, IconFileX as te, IconMusic as z, IconPaperclip as B, IconPhoto as V, IconReload as ne, IconTerminal2 as H, IconVideo as re, IconX as ie } from "@tabler/icons-react";
4
+ import { DIAL_ICON_SIZE as U, DIAL_KIT_ICON_STROKE as W, ElementSize as ae, GhostIconButton as oe, Highlight as se, Skeleton as ce, SkeletonVariant as le, Spinner as ue, StaticIconButton as de } from "@epam/ai-dial-ui-kit";
5
+ import { Fragment as fe, jsx as G, jsxs as K } from "react/jsx-runtime";
6
+ //#region src/utils/attachment.ts
7
+ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) => {
8
+ if (e == null) return "";
10
9
  let t = e.lastIndexOf(".");
11
10
  return t > 0 ? e.slice(0, t) : e;
12
- }, he = {
11
+ }, me = {
13
12
  image: "Image files",
14
13
  audio: "Audio files",
15
14
  video: "Video files",
16
- text: "Text files"
17
- }, ge = (e, t = he) => e.map((e) => {
18
- if (e.endsWith("/*")) {
19
- let n = e.slice(0, -2);
20
- return t[n] ?? `${n} files`;
15
+ text: "Text files",
16
+ "*": "All files"
17
+ }, he = { "image/jpeg": "JPEG" }, ge = (e, t = me) => e.map((e) => {
18
+ let r = e.toLowerCase().split(";")[0].trim();
19
+ if (r.endsWith("/*")) {
20
+ let e = r.slice(0, -2);
21
+ return t[e] ?? `${e} files`;
21
22
  }
22
- let n = e.split("/")[1];
23
- return n == null ? e.toUpperCase() : n.toUpperCase();
23
+ let i = he[r];
24
+ if (i) return i;
25
+ let a = n[r];
26
+ if (a) return a.toUpperCase();
27
+ let o = r.split("/")[1];
28
+ return o == null ? e.toUpperCase() : o.toUpperCase();
24
29
  }).join(", "), _e = (e, t) => t.length === 0 ? !1 : t.some((t) => {
25
30
  if (t === "*" || t === "*/*") return !0;
26
31
  if (t.endsWith("/*")) {
@@ -29,60 +34,60 @@ var ue = 5, de = 4, fe = "flex size-[84px] items-center justify-center rounded-x
29
34
  }
30
35
  return e === t;
31
36
  }), ve = (e) => {
32
- if (!e) return _;
37
+ if (!e) return h;
33
38
  if (e.startsWith("image/")) switch (e) {
34
39
  case "image/jpeg":
35
- case "image/jpg": return T;
36
- case "image/png": return A;
37
- case "image/svg+xml": return P;
38
- case "image/bmp": return y;
39
- default: return U;
40
+ case "image/jpg": return C;
41
+ case "image/png": return O;
42
+ case "image/svg+xml": return M;
43
+ case "image/bmp": return _;
44
+ default: return V;
40
45
  }
41
- if (e.startsWith("video/")) return ie;
42
- if (e.startsWith("audio/")) return te;
46
+ if (e.startsWith("video/")) return re;
47
+ if (e.startsWith("audio/")) return z;
43
48
  switch (e) {
44
- case "application/pdf": return O;
49
+ case "application/pdf": return E;
45
50
  case "application/msword":
46
- case "application/vnd.ms-word": return S;
47
- case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": return C;
48
- case "application/vnd.ms-powerpoint": return j;
49
- case "application/vnd.openxmlformats-officedocument.presentationml.presentation": return j;
50
- case "application/vnd.ms-excel": return z;
51
- case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": return z;
51
+ case "application/vnd.ms-word": return b;
52
+ case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": return x;
53
+ case "application/vnd.ms-powerpoint": return k;
54
+ case "application/vnd.openxmlformats-officedocument.presentationml.presentation": return k;
55
+ case "application/vnd.ms-excel": return L;
56
+ case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": return L;
52
57
  case "application/zip":
53
58
  case "application/x-zip-compressed":
54
59
  case "application/x-rar-compressed":
55
60
  case "application/x-7z-compressed":
56
61
  case "application/gzip":
57
- case "application/x-tar": return V;
58
- case "text/csv": return x;
59
- case "text/plain": return L;
62
+ case "application/x-tar": return ee;
63
+ case "text/csv": return y;
64
+ case "text/plain": return F;
60
65
  case "text/html":
61
- case "application/xhtml+xml": return w;
66
+ case "application/xhtml+xml": return S;
62
67
  case "text/xml":
63
- case "application/xml": return B;
68
+ case "application/xml": return R;
64
69
  case "application/sql":
65
- case "text/x-sql": return N;
70
+ case "text/x-sql": return j;
66
71
  case "text/javascript":
67
- case "application/javascript": return E;
68
- case "text/jsx": return D;
72
+ case "application/javascript": return w;
73
+ case "text/jsx": return T;
69
74
  case "application/typescript":
70
- case "text/typescript": return F;
71
- case "text/tsx": return I;
72
- case "text/css": return b;
75
+ case "text/typescript": return N;
76
+ case "text/tsx": return P;
77
+ case "text/css": return v;
73
78
  case "text/x-php":
74
- case "application/x-php": return k;
79
+ case "application/x-php": return D;
75
80
  case "text/x-rustsrc":
76
- case "application/x-rust": return M;
77
- case "text/x-vue": return R;
78
- default: return _;
81
+ case "application/x-rust": return A;
82
+ case "text/x-vue": return I;
83
+ default: return h;
79
84
  }
80
85
  }, ye = (e) => {
81
86
  let { type: n, contentType: r } = e;
82
- return n === t.Prompt ? re : n === t.Pasted ? m : n === t.Image ? U : ve(r ?? "");
87
+ return n === t.Prompt ? H : n === t.Pasted ? f : n === t.Image ? V : ve(r ?? "");
83
88
  }, be = (e) => {
84
- let t = e.toLowerCase().split(";")[0].trim(), n = r[t];
85
- if (n) return n;
89
+ let t = e.toLowerCase().split(";")[0].trim(), r = n[t];
90
+ if (r) return r;
86
91
  let i = t.split("/")[1];
87
92
  if (i && !i.startsWith("vnd.") && !i.includes("+")) return i;
88
93
  }, xe = (e, n) => {
@@ -94,211 +99,167 @@ var ue = 5, de = 4, fe = "flex size-[84px] items-center justify-center rounded-x
94
99
  let e = be(a);
95
100
  if (e) return `.${e}`;
96
101
  }
102
+ if (i == null) return "";
97
103
  let o = i.lastIndexOf(".");
98
104
  return o > 0 && o < i.length - 1 ? `.${i.slice(o + 1).toLowerCase()}` : i;
99
- }, Y = (e, n = {}) => {
100
- let { type: r, status: a, previewUrl: o, url: s } = e, c = a === i.Loading, l = a === i.Error, u = r === t.Image && !!(o ?? s) && !l, d = r === t.Audio && !l, f = r === t.Link && !l;
105
+ }, J = (e, n = {}) => {
106
+ let { type: i, status: a, previewUrl: o, url: s } = e, c = a === r.Loading, l = a === r.Error, u = i === t.Image && !!(o ?? s) && !l, d = i === t.Link && !l;
101
107
  return {
102
108
  isLoading: c,
103
109
  isError: l,
104
110
  isImage: u,
105
- isAudio: d,
106
- isLink: f,
107
- BottomIcon: f ? null : ye(e),
108
- typeLabel: f ? null : xe(e, n)
111
+ isLink: d,
112
+ BottomIcon: d ? null : ye(e),
113
+ typeLabel: d ? null : xe(e, n)
109
114
  };
110
- }, Se = (e, t) => e <= 0 ? {
111
- layout: J.None,
112
- visibleCount: 0,
113
- hiddenCount: 0
114
- } : e < 5 || t ? {
115
- layout: J.AllVisible,
116
- visibleCount: e,
117
- hiddenCount: 0
118
- } : {
119
- layout: J.Collapsed,
120
- visibleCount: 4,
121
- hiddenCount: e - 4
122
- }, X = {
123
- tile: "_tile_3x6ks_1",
124
- tileLight: "_tileLight_3x6ks_12",
125
- tileError: "_tileError_3x6ks_16",
126
- nameText: "_nameText_3x6ks_23",
127
- typeText: "_typeText_3x6ks_24",
128
- retryIcon: "_retryIcon_3x6ks_36",
129
- hoverIcon: "_hoverIcon_3x6ks_40",
130
- track: "_track_3x6ks_48",
131
- indeterminateFill: "_indeterminateFill_3x6ks_52",
132
- "attachment-tile-indeterminate": "_attachment-tile-indeterminate_3x6ks_1"
133
- }, Z = ({ ariaLabel: e, errorTitle: t, errorDescId: n, onClick: r, id: i, icon: a, className: s }) => /* @__PURE__ */ K(oe, {
134
- icon: a,
135
- size: le.Small,
136
- className: o("absolute end-1 top-1 h-6 w-6 rounded-lg", s ?? X.hoverIcon),
115
+ }, Se = 5, Ce = "flex size-[84px] items-center justify-center rounded-xl border", Y = {
116
+ tile: "_tile_1whwz_1",
117
+ hovered: "_hovered_1whwz_5",
118
+ selected: "_selected_1whwz_15",
119
+ tileError: "_tileError_1whwz_20",
120
+ nameText: "_nameText_1whwz_25",
121
+ typeText: "_typeText_1whwz_29",
122
+ retryIcon: "_retryIcon_1whwz_33",
123
+ track: "_track_1whwz_37",
124
+ actionButton: "_actionButton_1whwz_43",
125
+ imageActionButton: "_imageActionButton_1whwz_47"
126
+ }, X = ({ ariaLabel: e, errorTitle: t, errorDescId: n, onClick: r, id: i, icon: o, className: s }) => /* @__PURE__ */ G(de, {
127
+ icon: o,
128
+ size: ae.Small,
129
+ className: a("opacity-0 focus-visible:opacity-100 group-focus-within/attachment-tile:opacity-100 group-hover/attachment-tile:opacity-100", Y.actionButton, s),
137
130
  "aria-label": e,
138
131
  "aria-describedby": t ? n : void 0,
139
132
  onClick: (e) => {
140
133
  e.stopPropagation(), r(i);
141
134
  }
142
- }), Ce = ({ ...e }) => /* @__PURE__ */ K(Z, {
143
- icon: /* @__PURE__ */ K(ne, {
144
- size: W.SM,
145
- "aria-hidden": !0
135
+ }), we = ({ ...e }) => /* @__PURE__ */ G(X, {
136
+ icon: /* @__PURE__ */ G(ne, {
137
+ size: U.SM,
138
+ "aria-hidden": !0,
139
+ stroke: W
146
140
  }),
147
- className: X.retryIcon,
141
+ className: Y.retryIcon,
148
142
  ...e
149
- }), we = ({ ...e }) => /* @__PURE__ */ K(Z, {
150
- icon: /* @__PURE__ */ K(h, {
151
- size: W.SM,
152
- "aria-hidden": !0
143
+ }), Te = ({ ...e }) => /* @__PURE__ */ G(X, {
144
+ icon: /* @__PURE__ */ G(p, {
145
+ size: U.SM,
146
+ "aria-hidden": !0,
147
+ stroke: W
153
148
  }),
154
149
  ...e
155
- }), Te = ({ ...e }) => /* @__PURE__ */ K(Z, {
156
- icon: /* @__PURE__ */ K(g, {
157
- size: W.SM,
158
- "aria-hidden": !0
150
+ }), Ee = ({ ...e }) => /* @__PURE__ */ G(X, {
151
+ icon: /* @__PURE__ */ G(m, {
152
+ size: U.SM,
153
+ "aria-hidden": !0,
154
+ stroke: W
159
155
  }),
160
156
  ...e
161
- }), Ee = ({ ...e }) => /* @__PURE__ */ K(Z, {
162
- icon: /* @__PURE__ */ K(ae, {
163
- size: W.SM,
164
- "aria-hidden": !0
157
+ }), De = ({ ...e }) => /* @__PURE__ */ G(X, {
158
+ icon: /* @__PURE__ */ G(ie, {
159
+ size: U.SM,
160
+ "aria-hidden": !0,
161
+ stroke: W
165
162
  }),
166
- className: X.hoverIcon,
167
163
  ...e
168
- }), De = ({ attachment: e, searchQuery: t = "", onClick: r, onDownload: i, onRemove: a, labels: s, styles: c, cssVars: l }) => {
169
- let { clickLabel: u = "Open attachment", downloadLabel: d = "Download attachment", removeLabel: f = "Remove attachment" } = s ?? {}, { typography: p, className: m } = c ?? {}, h = () => {
170
- r?.(e.id);
171
- };
172
- return /* @__PURE__ */ q("div", {
173
- style: l,
174
- ...r == null ? {} : {
175
- role: "button",
176
- tabIndex: 0,
177
- "aria-label": u,
178
- onClick: h,
179
- onKeyDown: (e) => {
180
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), h());
181
- }
182
- },
183
- className: o("group relative flex w-full min-w-[280px] max-w-[300px] flex-col gap-2 rounded-xl border p-3", r && "cursor-pointer", (i || a) && "pe-8", m),
184
- children: [
185
- /* @__PURE__ */ K("span", {
186
- title: e.name,
187
- className: o(p?.fontClassName ?? "dial-tiny-text", "min-w-0 truncate", X.nameText),
188
- children: t ? /* @__PURE__ */ K(n, {
189
- text: e.name,
190
- query: t,
191
- maxLines: 1
192
- }) : e.name
193
- }),
194
- e.playUrl && /* @__PURE__ */ K("audio", {
195
- controls: !0,
196
- src: e.playUrl,
197
- "aria-label": e.name,
198
- className: "w-full",
199
- preload: "metadata",
200
- onClick: (e) => e.stopPropagation()
201
- }),
202
- i && /* @__PURE__ */ K(we, {
203
- ariaLabel: d,
204
- onClick: i,
205
- id: e.id
206
- }),
207
- a && /* @__PURE__ */ K(Ee, {
208
- ariaLabel: f,
209
- onClick: a,
210
- id: e.id
211
- })
212
- ]
213
- });
214
- }, Oe = {
164
+ }), Oe = {
215
165
  [e.Network]: "Upload failed · network error",
216
166
  [e.UnsupportedType]: "Upload failed · unsupported file type"
217
- }, ke = ({ attachment: t, onClick: n, onRetry: r, labels: a, styles: c, onDownload: d, isPasted: f, isLink: p, cssVars: m, onExpand: h, isExpandable: g, onRemove: _ }) => {
218
- let { clickLabel: v = "Download attachment", retryLabel: y = "Retry upload", sizeLabel: b, uploadingLabel: x = "Uploading", errorReasonLabels: S, genericErrorLabel: C = "Upload failed" } = a ?? {}, { typography: { nameClassName: w = "dial-caption-text", metaClassName: T = "dial-caption-text" } = {}, className: E } = c ?? {}, { id: D, name: O, status: k, errorReason: A } = t, j = k === i.Loading, M = k === i.Error, N = l(), P = M ? A && (S?.[A] ?? Oe[A]) || C : "", { BottomIcon: F, typeLabel: I } = Y(t), L = !M && !j && d && !p, R = M && !!r && A !== e.UnsupportedType, z = L || R ? "pe-5" : void 0, B = (e) => {
219
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), n?.(t.id));
220
- }, V = u(() => f ? O : me(O), [f, O]), ee = s(() => {
167
+ }, ke = ({ attachment: t, searchQuery: n = "", onClick: i, onRetry: s, labels: u, styles: d, onDownload: f, isPasted: p, isLink: m, cssVars: h, onExpand: g, isExpandable: _, onRemove: v, isSelected: y }) => {
168
+ let { clickLabel: b = "Download attachment", retryLabel: x = "Retry upload", removeLabel: S = "Remove attachment", openInNewTabLabel: C = "Open in new tab", sizeLabel: w, uploadingLabel: T = "Uploading", errorReasonLabels: E, genericErrorLabel: D = "Upload failed" } = u ?? {}, { typography: O, className: k } = d ?? {}, { id: A, name: j, status: M, errorReason: N } = t, P = M === r.Loading, F = M === r.Error, I = c(), L = F ? N && (E?.[N] ?? Oe[N]) || D : "", { BottomIcon: R, typeLabel: ee } = J(t), te = !F && !P && f && !m, z = F && !!s && N !== e.UnsupportedType, B = Number(!!te) + Number(!!z) + Number(!!m) + Number(!!v), V = B > 1 ? "pe-11" : B === 1 ? "pe-5" : void 0, ne = (e) => {
169
+ e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), i?.(t.id));
170
+ }, H = l(() => p ? j : pe(j), [p, j]), re = o(() => {
221
171
  window.open(t.referenceUrl, "_blank", "noopener,noreferrer");
222
- }, [t]), te = o(fe, "group relative flex-col justify-between items-start gap-1 overflow-hidden p-1.5", X.tile, !M && X.tileLight, M && X.tileError), H = /* @__PURE__ */ K("div", {
223
- title: V,
224
- className: o(w, "line-clamp-2 min-w-0 break-all", X.nameText, !M && z),
225
- children: V
226
- }), U = F && /* @__PURE__ */ q("div", {
227
- className: o("flex w-full items-center gap-1", M && z),
228
- children: [/* @__PURE__ */ K(F, {
172
+ }, [t]), ie = a(Ce, "group/attachment-tile relative flex-col justify-between items-start gap-1 overflow-hidden p-1.5", Y.tile, !F && Y.hovered, y && Y.selected, F && Y.tileError), U = /* @__PURE__ */ G("div", {
173
+ title: H,
174
+ className: a(O?.nameClassName ?? "dial-caption-text", "line-clamp-2 w-full min-w-0 break-words", Y.nameText, !F && V),
175
+ children: n ? /* @__PURE__ */ G(se, {
176
+ text: H,
177
+ query: n,
178
+ maxLines: 2
179
+ }) : H
180
+ }), W = R && /* @__PURE__ */ K("div", {
181
+ className: a("flex w-full items-center gap-1", F && V),
182
+ children: [/* @__PURE__ */ G(R, {
229
183
  size: 16,
230
- className: X.typeText,
184
+ className: Y.typeText,
231
185
  "aria-hidden": !0
232
- }), /* @__PURE__ */ K("span", {
233
- className: o(T, "min-w-0 flex-1 truncate", X.typeText),
234
- children: b ? `${I} · ${b}` : I
186
+ }), /* @__PURE__ */ G("span", {
187
+ className: a(O?.metaClassName ?? "dial-caption-text", "min-w-0 flex-1 truncate", Y.typeText),
188
+ children: w ? `${ee} · ${w}` : ee
235
189
  })]
236
- }), ne = () => {
237
- g && h ? h(D) : n && n(D);
238
- }, re = /* @__PURE__ */ q(G, { children: [
239
- M ? /* @__PURE__ */ q(G, { children: [U, H] }) : /* @__PURE__ */ q(G, { children: [H, U] }),
240
- j && /* @__PURE__ */ K("div", {
190
+ }), ae = () => {
191
+ _ && g ? g(A) : i && i(A);
192
+ }, oe = /* @__PURE__ */ K(fe, { children: [
193
+ U,
194
+ W,
195
+ P && /* @__PURE__ */ G("div", {
241
196
  role: "progressbar",
242
- "aria-label": x,
243
- className: o("absolute inset-x-2 bottom-2 h-[3px] overflow-hidden rounded-full", X.track),
244
- children: /* @__PURE__ */ K("div", { className: o("h-full w-1/3 rounded-full", X.indeterminateFill) })
245
- }),
246
- L && /* @__PURE__ */ K(we, {
247
- ariaLabel: v,
248
- errorTitle: P,
249
- errorDescId: N,
250
- onClick: d,
251
- id: D
252
- }),
253
- R && /* @__PURE__ */ K(Ce, {
254
- ariaLabel: y,
255
- errorTitle: P,
256
- errorDescId: N,
257
- onClick: r,
258
- id: D
197
+ "aria-label": T,
198
+ className: a("absolute start-[-1px] top-[-1px] flex size-full items-center justify-center rounded", Y.track),
199
+ children: /* @__PURE__ */ G(ue, { size: 32 })
259
200
  }),
260
- p && /* @__PURE__ */ K(Te, {
261
- ariaLabel: y,
262
- errorTitle: P,
263
- errorDescId: N,
264
- onClick: ee
265
- }),
266
- _ && /* @__PURE__ */ K(Ee, {
267
- ariaLabel: y,
268
- errorTitle: P,
269
- errorDescId: N,
270
- onClick: _,
271
- id: D
201
+ /* @__PURE__ */ K("div", {
202
+ className: "absolute end-1 top-1 flex gap-1",
203
+ children: [
204
+ te && /* @__PURE__ */ G(Te, {
205
+ ariaLabel: b,
206
+ errorTitle: L,
207
+ errorDescId: I,
208
+ onClick: f,
209
+ id: A
210
+ }),
211
+ z && /* @__PURE__ */ G(we, {
212
+ ariaLabel: x,
213
+ errorTitle: L,
214
+ errorDescId: I,
215
+ onClick: s,
216
+ id: A
217
+ }),
218
+ m && /* @__PURE__ */ G(Ee, {
219
+ ariaLabel: C,
220
+ errorTitle: L,
221
+ errorDescId: I,
222
+ onClick: re
223
+ }),
224
+ v && /* @__PURE__ */ G(De, {
225
+ ariaLabel: S,
226
+ errorTitle: L,
227
+ errorDescId: I,
228
+ onClick: v,
229
+ id: A
230
+ })
231
+ ]
272
232
  }),
273
- M && /* @__PURE__ */ K("span", {
274
- id: N,
233
+ F && /* @__PURE__ */ G("span", {
234
+ id: I,
275
235
  role: "status",
276
236
  "aria-live": "polite",
277
237
  className: "sr-only",
278
- children: P
238
+ children: L
279
239
  })
280
240
  ] });
281
- return /* @__PURE__ */ K("div", {
282
- style: m,
283
- className: o("inline-flex", E),
284
- children: /* @__PURE__ */ K("div", {
241
+ return /* @__PURE__ */ G("div", {
242
+ style: h,
243
+ className: a("inline-flex", k),
244
+ children: /* @__PURE__ */ G("div", {
285
245
  role: "button",
286
246
  tabIndex: 0,
287
- "aria-label": v,
288
- onClick: ne,
289
- onKeyDown: B,
290
- style: m,
291
- className: o(te, "cursor-pointer focus-within:outline focus-within:outline-1 focus-within:outline-offset-1"),
292
- children: re
247
+ "aria-label": b,
248
+ "aria-busy": P,
249
+ onClick: ae,
250
+ onKeyDown: ne,
251
+ style: h,
252
+ className: a(ie, "cursor-pointer focus-within:outline focus-within:outline-1 focus-within:outline-offset-1"),
253
+ children: oe
293
254
  })
294
255
  });
295
- }, Q = /* @__PURE__ */ function(e) {
256
+ }, Z = /* @__PURE__ */ function(e) {
296
257
  return e.Idle = "idle", e.Loading = "loading", e.Loaded = "loaded", e.Error = "error", e;
297
258
  }({}), Ae = ({ enabled: e, src: t }) => {
298
- let n = d(null), [r, i] = f("idle");
299
- return c(() => {
259
+ let n = u(null), [r, i] = d("idle");
260
+ return s(() => {
300
261
  i(e && t ? "loading" : "idle");
301
- }, [e, t]), c(() => {
262
+ }, [e, t]), s(() => {
302
263
  let r = n.current;
303
264
  if (!r || !e || !t) return;
304
265
  let a = () => i("loaded"), o = () => i("error");
@@ -309,114 +270,117 @@ var ue = 5, de = 4, fe = "flex size-[84px] items-center justify-center rounded-x
309
270
  imageRef: n,
310
271
  imageLoadStatus: r
311
272
  };
312
- }, je = ({ attachment: e, onExpand: n, onClick: r, labels: i, onRemove: a, cssVars: s, onDownload: c, styles: l }) => {
313
- let { clickLabel: d = "Open attachment", expandLabel: f = "Expand pasted text" } = i ?? {}, { typography: p, className: m } = l ?? {}, { id: h, name: g } = e, _ = e.previewUrl ?? e.url, v = e.type === t.Pasted && n !== void 0, { isLoading: y, isError: b, isImage: x } = u(() => Y(e), [e]), S = r !== void 0 && !v && !y && !b, { imageRef: C, imageLoadStatus: w } = Ae({
314
- enabled: x,
315
- src: _
316
- }), T = () => {
317
- v && n ? n(h) : S && r && r(h);
273
+ }, je = ({ attachment: e, onExpand: n, onClick: r, labels: i, onRemove: o, cssVars: s, onDownload: c, styles: u, isSelected: d }) => {
274
+ let { clickLabel: f = "Open attachment", expandLabel: p = "Expand pasted text", removeLabel: m = "Remove attachment", downloadLabel: h = "Download attachment" } = i ?? {}, { className: g } = u ?? {}, { id: _, name: v } = e, y = e.previewUrl ?? e.url, b = e.type === t.Pasted && n !== void 0, { isLoading: x, isError: S, isImage: C } = l(() => J(e), [e]), w = r !== void 0 && !b && !x && !S, { imageRef: T, imageLoadStatus: E } = Ae({
275
+ enabled: C,
276
+ src: y
277
+ }), D = () => {
278
+ b && n ? n(_) : w && r && r(_);
318
279
  };
319
- return /* @__PURE__ */ K("div", {
320
- className: o(fe, S && "cursor-pointer", X.tile, m),
321
- onClick: T,
280
+ return /* @__PURE__ */ G("div", {
281
+ className: a(Ce, "group/attachment-tile", w && "cursor-pointer", Y.tile, d && Y.selected, g),
282
+ onClick: D,
322
283
  onKeyDown: (e) => {
323
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), T());
284
+ e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), D());
324
285
  },
325
286
  tabIndex: 0,
326
287
  role: "button",
327
288
  style: s,
328
- "aria-label": S ? d : v ? f : void 0,
329
- children: /* @__PURE__ */ q("div", {
289
+ "aria-label": w ? f : b ? p : void 0,
290
+ children: /* @__PURE__ */ K("div", {
330
291
  className: "relative h-full w-full overflow-hidden",
331
292
  children: [
332
- a && /* @__PURE__ */ K(Ee, {
333
- onClick: a,
334
- id: h
293
+ /* @__PURE__ */ K("div", {
294
+ className: "absolute end-1 top-1 z-10 flex gap-1",
295
+ children: [o && /* @__PURE__ */ G(De, {
296
+ ariaLabel: m,
297
+ onClick: o,
298
+ id: _,
299
+ className: Y.imageActionButton
300
+ }), c && /* @__PURE__ */ G(Te, {
301
+ ariaLabel: h,
302
+ onClick: c,
303
+ id: _,
304
+ className: Y.imageActionButton
305
+ })]
335
306
  }),
336
- c && /* @__PURE__ */ K(we, {
337
- onClick: c,
338
- id: h
339
- }),
340
- w !== Q.Loaded && /* @__PURE__ */ K(se, {
341
- variant: ce.Rectangular,
307
+ E !== Z.Loaded && /* @__PURE__ */ G(ce, {
308
+ variant: le.Rectangular,
342
309
  width: "100%",
343
310
  height: "100%",
344
- active: w === Q.Loading,
345
- overlay: /* @__PURE__ */ K(U, {
346
- size: W.LG,
347
- className: p?.placeholderIconClassName ?? "text-secondary",
348
- "aria-hidden": !0
311
+ active: E === Z.Loading,
312
+ overlay: /* @__PURE__ */ G(V, {
313
+ size: U.LG,
314
+ className: Y.typeText,
315
+ "aria-hidden": !0,
316
+ stroke: W
349
317
  }),
350
318
  className: "absolute inset-0 rounded-xl"
351
319
  }),
352
- /* @__PURE__ */ K("img", {
353
- ref: C,
354
- src: _,
355
- alt: g,
320
+ /* @__PURE__ */ G("img", {
321
+ ref: T,
322
+ src: y,
323
+ alt: v,
356
324
  loading: "lazy",
357
325
  decoding: "async",
358
- className: o("h-full w-full rounded-xl object-cover transition-opacity duration-200", w === Q.Loaded ? "opacity-100" : "opacity-0")
326
+ className: a("h-full w-full rounded-xl object-cover transition-opacity duration-200", E === Z.Loaded ? "opacity-100" : "opacity-0")
359
327
  })
360
328
  ]
361
329
  })
362
330
  });
363
- }, Me = ({ attachment: e, searchQuery: n = "", onRemove: r, onRetry: i, onExpand: o, onClick: s, onDownload: c, labels: l, styles: d }) => {
364
- let { colors: f } = d ?? {}, p = e.type === t.Pasted, m = p && o !== void 0, h = a({
365
- "--ci-tile-bg": f?.background,
366
- "--ci-tile-border": f?.border,
367
- "--ci-tile-border-hover": f?.borderHover,
368
- "--ci-tile-focus-outline": f?.focusOutline,
369
- "--ci-tile-bg-error": f?.backgroundError,
370
- "--ci-tile-border-error": f?.borderError,
371
- "--ci-tile-error-text": f?.errorText,
372
- "--ci-tile-name-text": f?.nameText,
373
- "--ci-tile-type-text": f?.typeText,
374
- "--ci-tile-hover-icon-bg": f?.hoverIconBackground,
375
- "--ci-tile-hover-icon-color": f?.hoverIconColor,
376
- "--ci-tile-track-bg": f?.trackBackground,
377
- "--ci-tile-fill-bg": f?.fillBackground
378
- }), { isImage: g, isAudio: _, isLink: v } = u(() => Y(e), [e]);
379
- return _ ? /* @__PURE__ */ K(De, {
331
+ }, Q = ({ attachment: e, searchQuery: n = "", onRemove: r, onRetry: a, onExpand: o, onClick: s, onDownload: c, labels: u, styles: d, isSelected: f }) => {
332
+ let { colors: p } = d ?? {}, m = e.type === t.Pasted, h = m && o !== void 0, g = i({
333
+ "--ai-tile-bg": p?.background,
334
+ "--ai-tile-border": p?.border,
335
+ "--ai-tile-bg-hover": p?.backgroundHover,
336
+ "--ai-tile-border-hover": p?.borderHover,
337
+ "--ai-tile-bg-selected": p?.backgroundSelected,
338
+ "--ai-tile-border-selected": p?.borderSelected,
339
+ "--ai-tile-focus-outline": p?.focusOutline,
340
+ "--ai-tile-bg-error": p?.backgroundError,
341
+ "--ai-tile-border-error": p?.borderError,
342
+ "--ai-tile-error-text": p?.errorText,
343
+ "--ai-tile-name-text": p?.nameText,
344
+ "--ai-tile-type-text": p?.typeText,
345
+ "--ai-tile-hover-icon-bg": p?.hoverIconBackground,
346
+ "--ai-tile-hover-icon-color": p?.hoverIconColor,
347
+ "--ai-tile-progress-track": p?.trackBackground
348
+ }), { isImage: _, isLink: v } = l(() => J(e), [e]);
349
+ return _ ? /* @__PURE__ */ G(je, {
380
350
  attachment: e,
381
- labels: l,
382
- onClick: s,
383
- onDownload: c,
384
- onRemove: r,
385
- searchQuery: n,
386
- styles: d,
387
- cssVars: h
388
- }) : g ? /* @__PURE__ */ K(je, {
389
- attachment: e,
390
- labels: l,
351
+ labels: u,
391
352
  onClick: s,
392
353
  onExpand: o,
393
354
  styles: d,
394
355
  onRemove: r,
395
- cssVars: h,
396
- onDownload: c
397
- }) : /* @__PURE__ */ K(ke, {
356
+ cssVars: g,
357
+ onDownload: c,
358
+ isSelected: f
359
+ }) : /* @__PURE__ */ G(ke, {
398
360
  attachment: e,
361
+ searchQuery: n,
399
362
  onClick: s,
400
- onRetry: i,
363
+ onRetry: a,
401
364
  onRemove: r,
402
365
  onDownload: c,
403
366
  isLink: v,
404
- isPasted: p,
367
+ isPasted: m,
405
368
  styles: d,
406
- labels: l,
369
+ labels: u,
407
370
  onExpand: o,
408
- cssVars: h,
409
- isExpandable: m
371
+ cssVars: g,
372
+ isExpandable: h,
373
+ isSelected: f
410
374
  });
411
- }, Ne = ({ attachments: e, onRemove: t, onRetry: n, onExpand: r, onAttachmentClick: i, labels: a, styles: s }) => {
412
- let { ariaLabel: c = "Attached files", removeLabel: l, retryLabel: u, clickLabel: d } = a ?? {}, { className: f } = s ?? {};
413
- return e.length === 0 ? null : /* @__PURE__ */ K("div", {
375
+ }, Me = ({ attachments: e, onRemove: t, onRetry: n, onExpand: r, onAttachmentClick: i, labels: o, styles: s }) => {
376
+ let { ariaLabel: c = "Attached files", removeLabel: l, retryLabel: u, clickLabel: d, uploadingLabel: f } = o ?? {}, { className: p } = s ?? {};
377
+ return e.length === 0 ? null : /* @__PURE__ */ G("div", {
414
378
  role: "list",
415
379
  "aria-label": c,
416
- className: o("flex w-full min-w-0 gap-2 overflow-x-auto", f),
417
- children: e.map((e) => /* @__PURE__ */ K("div", {
380
+ className: a("flex w-full min-w-0 gap-2 overflow-x-auto", p),
381
+ children: e.map((e) => /* @__PURE__ */ G("div", {
418
382
  role: "listitem",
419
- children: /* @__PURE__ */ K(Me, {
383
+ children: /* @__PURE__ */ G(Q, {
420
384
  attachment: e,
421
385
  onRemove: t,
422
386
  onRetry: n,
@@ -424,206 +388,162 @@ var ue = 5, de = 4, fe = "flex size-[84px] items-center justify-center rounded-x
424
388
  labels: {
425
389
  removeLabel: l,
426
390
  retryLabel: u,
427
- clickLabel: d
391
+ clickLabel: d,
392
+ uploadingLabel: f
428
393
  },
429
394
  onClick: i
430
395
  })
431
396
  }, e.id))
432
397
  });
433
- }, Pe = { tile: "_tile_nzsrz_1" }, Fe = ({ count: e, onClick: t, labels: n, children: r, styles: i }) => {
434
- let { ariaLabel: s } = n ?? {}, { typography: { fontClassName: c = "dial-small-semi-text" } = {}, className: l, colors: u } = i ?? {}, d = a({
435
- "--ci-more-tile-bg": u?.background,
436
- "--ci-more-tile-border": u?.border,
437
- "--ci-more-tile-color": u?.color,
438
- "--ci-more-tile-bg-hover": u?.backgroundHover,
439
- "--ci-more-tile-color-hover": u?.colorHover,
440
- "--ci-more-tile-border-hover": u?.borderHover,
441
- "--ci-more-tile-focus-outline": u?.focusOutline
442
- });
443
- return /* @__PURE__ */ K("button", {
444
- type: "button",
445
- onClick: t,
446
- "aria-label": s ?? `Show ${e} more attachments`,
447
- style: d,
448
- className: o(fe, c, Pe.tile, l),
449
- children: r ?? /* @__PURE__ */ K("bdi", {
450
- dir: "ltr",
451
- children: `+${e}`
452
- })
453
- });
454
- }, $ = {
455
- container: "_container_7fktb_1",
456
- headerIcon: "_headerIcon_7fktb_6",
457
- headerLabel: "_headerLabel_7fktb_7",
458
- downloadAllButton: "_downloadAllButton_7fktb_8",
459
- imageTile: "_imageTile_7fktb_12"
460
- }, Ie = (e, t) => `${e} ${t}${e === 1 ? "" : "s"}`, Le = ({ attachments: e, onAttachmentClick: n, onDownloadAll: r, onRetry: s, labels: c, styles: l }) => {
461
- let { ariaLabel: d = "Attachments", clickLabel: m = "Download attachment", retryLabel: g = "Retry upload", showLessLabel: v = "Show less", downloadAllLabel: y = "Download all", openInNewTabLabel: b, getHeaderLabel: x = (e) => Ie(e, "attachment"), promptLabel: S, pastedLabel: C, imageLabel: w } = c ?? {}, { typography: { headerLabelClassName: T = "dial-tiny-semi-text" } = {}, colors: E, className: D } = l ?? {}, O = a({
462
- "--ci-group-bg": E?.background,
463
- "--ci-group-border": E?.border,
464
- "--ci-group-text": E?.text
465
- }), [k, A] = f(!1), j = u(() => Se(e.length, k), [e.length, k]);
398
+ }, Ne = {
399
+ headerIcon: "_headerIcon_1dmgi_1",
400
+ headerLabel: "_headerLabel_1dmgi_2"
401
+ }, Pe = (e, t) => `${e} ${t}${e === 1 ? "" : "s"}`, Fe = ({ attachments: e, onAttachmentClick: n, onDownloadAll: o, onRetry: s, labels: c, styles: l, selectedAttachmentId: u }) => {
402
+ let { ariaLabel: d = "Attachments", clickLabel: f = "Download attachment", retryLabel: m = "Retry upload", downloadAllLabel: g = "Download all", openInNewTabLabel: _, getHeaderLabel: v = (e) => Pe(e, "attachment"), promptLabel: y, pastedLabel: b, imageLabel: x } = c ?? {}, { typography: S, colors: C, className: w } = l ?? {}, T = i({ "--ai-group-text": C?.text });
466
403
  if (e.length === 0) return null;
467
- let M = e.some((e) => e.type === t.Image), N = e.some((e) => e.type !== t.Image), P = M && N, F = e.length >= 5, I = P ? H : M ? U : _, L = x(e.length), R = e.slice(0, j.visibleCount), z = () => {
468
- let t = e.filter((e) => e.status === i.Idle);
469
- r ? r(t) : t.forEach((e) => n?.(e.id));
470
- }, B = (t) => {
404
+ let E = e.some((e) => e.type === t.Image), D = e.some((e) => e.type !== t.Image), O = E && D, k = e.length >= 5, A = O ? B : E ? V : h, j = v(e.length), M = () => {
405
+ let t = e.filter((e) => e.status === r.Idle);
406
+ o ? o(t) : t.forEach((e) => n?.(e.id));
407
+ }, N = (t) => {
471
408
  let n = e.find((e) => e.id === t);
472
- n && r?.([n]);
409
+ n && o?.([n]);
473
410
  };
474
- return /* @__PURE__ */ q("div", {
411
+ return /* @__PURE__ */ K("div", {
475
412
  role: "group",
476
413
  "aria-label": d,
477
- style: O,
478
- className: o("rounded-2xl border p-3", F ? "w-full min-w-0 max-w-[492px]" : "max-w-[420px]", $.container, D),
479
- children: [/* @__PURE__ */ q("div", {
480
- className: "mb-3 flex min-h-6 items-center gap-2",
481
- children: [
482
- /* @__PURE__ */ K(I, {
483
- size: W.SM,
484
- className: o("shrink-0", $.headerIcon),
414
+ style: T,
415
+ className: a("flex flex-col gap-1", k ? "w-full min-w-0 max-w-[492px]" : "max-w-[420px]", Ne.container, w),
416
+ children: [/* @__PURE__ */ K("div", {
417
+ className: "flex items-center justify-between",
418
+ children: [/* @__PURE__ */ K("div", {
419
+ className: "flex items-center gap-1",
420
+ children: [/* @__PURE__ */ G(A, {
421
+ size: U.SM,
422
+ className: a("shrink-0", Ne.headerIcon),
485
423
  "aria-hidden": !0
424
+ }), /* @__PURE__ */ G("span", {
425
+ className: a(S?.headerLabelClassName ?? "dial-tiny-semi-text", Ne.headerLabel),
426
+ children: j
427
+ })]
428
+ }), e.length >= 2 && (o || n) && /* @__PURE__ */ G(oe, {
429
+ icon: /* @__PURE__ */ G(p, {
430
+ size: U.SM,
431
+ "aria-hidden": !0,
432
+ stroke: W
486
433
  }),
487
- /* @__PURE__ */ K("span", {
488
- className: o(T, $.headerLabel),
489
- children: L
490
- }),
491
- e.length >= 2 && (r || n) && /* @__PURE__ */ K(oe, {
492
- icon: /* @__PURE__ */ K(h, {
493
- size: W.SM,
494
- "aria-hidden": !0
495
- }),
496
- className: o("ms-auto h-6 w-6 rounded-lg", $.downloadAllButton),
497
- "aria-label": y,
498
- onClick: z
499
- })
500
- ]
501
- }), /* @__PURE__ */ q("div", {
434
+ size: ae.Small,
435
+ "aria-label": g,
436
+ onClick: M
437
+ })]
438
+ }), /* @__PURE__ */ G("div", {
502
439
  role: "list",
503
- "aria-label": L,
504
- className: o("gap-3", F ? "grid grid-cols-[repeat(5,83px)] overflow-x-auto" : "flex flex-wrap"),
505
- children: [
506
- R.map((e) => /* @__PURE__ */ K("div", {
507
- role: "listitem",
508
- children: /* @__PURE__ */ K(Me, {
509
- attachment: e,
510
- onClick: n,
511
- onDownload: B,
512
- onRetry: s,
513
- labels: {
514
- clickLabel: m,
515
- retryLabel: g,
516
- promptLabel: S,
517
- pastedLabel: C,
518
- imageLabel: w,
519
- openInNewTabLabel: b
520
- }
521
- })
522
- }, e.id)),
523
- j.layout === J.Collapsed && /* @__PURE__ */ K("div", {
524
- role: "listitem",
525
- children: /* @__PURE__ */ K(Fe, {
526
- count: j.hiddenCount,
527
- onClick: () => A(!0)
528
- })
529
- }),
530
- F && k && /* @__PURE__ */ K("div", {
531
- role: "listitem",
532
- children: /* @__PURE__ */ K(Fe, {
533
- count: 0,
534
- onClick: () => A(!1),
535
- labels: { ariaLabel: v },
536
- children: /* @__PURE__ */ K(p, {
537
- size: W.MD,
538
- "aria-hidden": !0
539
- })
540
- })
440
+ "aria-label": j,
441
+ className: a("gap-3", k ? "grid grid-cols-[repeat(5,83px)]" : "flex flex-wrap"),
442
+ children: e.map((e, t) => /* @__PURE__ */ G("div", {
443
+ role: "listitem",
444
+ children: /* @__PURE__ */ G(Q, {
445
+ attachment: e,
446
+ onClick: n,
447
+ onDownload: N,
448
+ onRetry: s,
449
+ labels: {
450
+ clickLabel: f,
451
+ retryLabel: m,
452
+ promptLabel: y,
453
+ pastedLabel: b,
454
+ imageLabel: x,
455
+ openInNewTabLabel: _
456
+ },
457
+ isSelected: e.id === u
541
458
  })
542
- ]
459
+ }, `${e.id}-${t}`))
543
460
  })]
544
461
  });
545
- }, Re = {
546
- overlay: "_overlay_1f3nw_1",
547
- icon: "_icon_1f3nw_5",
548
- deniedIcon: "_deniedIcon_1f3nw_9"
549
- }, ze = ({ isVisible: e, isAttachmentsAllowed: t = !0, labels: n, styles: r }) => {
550
- let { title: i, subtitle: s } = n ?? {}, { colors: c, typography: l } = r ?? {};
462
+ }, Ie = {
463
+ overlay: "_overlay_mzpdp_1",
464
+ icon: "_icon_mzpdp_5",
465
+ deniedIcon: "_deniedIcon_mzpdp_9"
466
+ }, Le = ({ isVisible: e, isAttachmentsAllowed: t = !0, labels: n, styles: r }) => {
467
+ let { title: o, subtitle: s } = n ?? {}, { colors: c, typography: l } = r ?? {};
551
468
  if (!e) return null;
552
- let u = a({
553
- "--fd-bg": c?.background,
554
- "--fd-icon": c?.icon,
555
- "--fd-denied-icon": c?.deniedIcon
556
- }), d = i ?? (t ? "Attach files" : "No attachments allowed"), f = s ?? (t ? "Drop files here to attach them to message" : "Attachments can't be added to message"), p = t ? Re.icon : Re.deniedIcon, m = (e) => {
469
+ let u = i({
470
+ "--ai-fd-bg": c?.background,
471
+ "--ai-fd-icon": c?.icon,
472
+ "--ai-fd-denied-icon": c?.deniedIcon
473
+ }), d = o ?? (t ? "Attach files" : "No attachments allowed"), f = s ?? (t ? "Drop files here to attach them to message" : "Attachments can't be added to message"), p = t ? Ie.icon : Ie.deniedIcon, m = (e) => {
557
474
  e.preventDefault();
558
- }, h = t ? v : ee;
559
- return /* @__PURE__ */ K("div", {
475
+ }, h = t ? g : te;
476
+ return /* @__PURE__ */ G("div", {
560
477
  role: "status",
561
478
  "aria-live": "polite",
562
- className: o("fixed inset-0 z-[9999] flex items-center justify-center backdrop-blur-sm", Re.overlay, t ? "pointer-events-none" : "pointer-events-auto cursor-not-allowed"),
479
+ className: a("fixed inset-0 z-[9999] flex items-center justify-center backdrop-blur-sm", Ie.overlay, t ? "pointer-events-none" : "pointer-events-auto cursor-not-allowed"),
563
480
  onDragOver: t ? void 0 : m,
564
481
  onDrop: t ? void 0 : m,
565
482
  style: u,
566
- children: /* @__PURE__ */ q("div", {
483
+ children: /* @__PURE__ */ K("div", {
567
484
  className: "flex flex-col items-center text-center",
568
485
  children: [
569
- /* @__PURE__ */ K(h, {
486
+ /* @__PURE__ */ G(h, {
570
487
  size: 100,
571
488
  className: p,
572
489
  "aria-hidden": !0
573
490
  }),
574
- /* @__PURE__ */ K("span", {
575
- className: o("mt-5", l?.titleClassName ?? "dial-h3-text"),
491
+ /* @__PURE__ */ G("span", {
492
+ className: a("mt-5", l?.titleClassName ?? "dial-h3-text"),
576
493
  children: d
577
494
  }),
578
- /* @__PURE__ */ K("span", {
579
- className: o("mt-4", l?.subtitleClassName ?? "dial-small-text"),
495
+ /* @__PURE__ */ G("span", {
496
+ className: a("mt-4", l?.subtitleClassName ?? "dial-small-text"),
580
497
  children: f
581
498
  })
582
499
  ]
583
500
  })
584
501
  });
585
- }, Be = (e, n, r = {}) => {
586
- let { screenshotName: a = "Screenshot.png", pastedTextName: o = "Pasted text" } = r;
587
- return { handlePaste: s((r) => {
588
- if (!r.clipboardData) return;
589
- let s = Array.from(r.clipboardData.items).filter((e) => e.kind === "file" && e.type.startsWith("image/")), c = r.clipboardData.getData("text/plain").length > 0;
590
- if (s.length > 0 && !c) {
591
- let n = [];
592
- for (let e of s) {
593
- let r = e.getAsFile();
594
- if (!r) continue;
595
- let o = new File([r], a, { type: r.type }), s = {
596
- id: pe(),
597
- name: a,
598
- contentType: r.type,
599
- file: o,
502
+ }, $ = (e) => String(e).padStart(2, "0"), Re = (e) => `${e.getFullYear()}-${$(e.getMonth() + 1)}-${$(e.getDate())} ${$(e.getHours())}-${$(e.getMinutes())}-${$(e.getSeconds())}`, ze = (e, t, n) => {
503
+ let r = e.lastIndexOf("."), i = r > 0, a = i ? e.slice(0, r) : e, o = i ? e.slice(r) : "", s = n === 0 ? "" : ` (${n + 1})`;
504
+ return `${a} ${Re(t)}${s}${o}`;
505
+ }, Be = (e, n, i = {}) => {
506
+ let { screenshotName: a = "Screenshot.png", pastedTextName: s = "Pasted text" } = i;
507
+ return { handlePaste: o((i) => {
508
+ if (!i.clipboardData) return;
509
+ let o = Array.from(i.clipboardData.items).filter((e) => e.kind === "file" && e.type.startsWith("image/")), c = i.clipboardData.getData("text/plain").length > 0;
510
+ if (o.length > 0 && !c) {
511
+ let n = [], s = /* @__PURE__ */ new Date();
512
+ for (let e of o) {
513
+ let i = e.getAsFile();
514
+ if (!i) continue;
515
+ let o = ze(a, s, n.length), c = new File([i], o, { type: i.type }), l = {
516
+ id: q(),
517
+ name: o,
518
+ contentType: i.type,
519
+ file: c,
600
520
  type: t.Image,
601
- status: i.Idle,
602
- previewUrl: URL.createObjectURL(o)
521
+ status: r.Idle,
522
+ previewUrl: URL.createObjectURL(c)
603
523
  };
604
- n.push(s);
524
+ n.push(l);
605
525
  }
606
- r.preventDefault(), e(n);
526
+ i.preventDefault(), e(n);
607
527
  return;
608
528
  }
609
- let l = r.clipboardData.getData("text/plain");
529
+ let l = i.clipboardData.getData("text/plain");
610
530
  if (l.length > n) {
611
- let n = l.trim(), a = (n.length > 80 ? `${n.slice(0, 80).trimEnd()}…` : n) || o, s = new File([l], a, { type: "text/plain" }), c = {
612
- id: pe(),
531
+ let n = l.trim(), a = (n.length > 80 ? `${n.slice(0, 80).trimEnd()}…` : n) || s, o = new File([l], a, { type: "text/plain" }), c = {
532
+ id: q(),
613
533
  name: a,
614
534
  contentType: "text/plain",
615
- file: s,
535
+ file: o,
616
536
  type: t.Pasted,
617
- status: i.Idle
537
+ status: r.Idle
618
538
  };
619
- r.preventDefault(), e([c]);
539
+ i.preventDefault(), e([c]);
620
540
  }
621
541
  }, [
622
542
  e,
623
543
  n,
624
544
  a,
625
- o
545
+ s
626
546
  ]) };
627
547
  }, Ve = 100;
628
548
  //#endregion
629
- export { de as ATTACHMENT_COLLAPSED_VISIBLE_COUNT, ue as ATTACHMENT_COLLAPSE_THRESHOLD, Me as AttachmentCard, Le as AttachmentGroup, Fe as AttachmentMoreTile, J as AttachmentTilesLayout, Ne as AttachmentTray, ze as FileDndOverlay, Q as LazyImageLoadStatus, Ve as MAX_UPLOADS_PER_MINUTE, pe as generateAttachmentId, Y as getAttachmentCardState, ve as getAttachmentIcon, Se as getAttachmentTilesPlan, be as getExtFromContentType, me as getNameWithoutExtension, _e as isMimeTypeAllowed, ge as mimeTypesToExtensionLabels, Be as useClipboardPaste, Ae as useLazyImageLoad };
549
+ export { Se as ATTACHMENT_COLLAPSE_THRESHOLD, Q as AttachmentCard, Fe as AttachmentGroup, Me as AttachmentTray, Le as FileDndOverlay, Z as LazyImageLoadStatus, Ve as MAX_UPLOADS_PER_MINUTE, q as generateAttachmentId, J as getAttachmentCardState, ve as getAttachmentIcon, be as getExtFromContentType, pe as getNameWithoutExtension, _e as isMimeTypeAllowed, ge as mimeTypesToExtensionLabels, Be as useClipboardPaste, Ae as useLazyImageLoad };