@epam/ai-dial-chat-shared 1.2.0-dev.164 → 1.2.0-dev.173

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,84 +1,86 @@
1
1
  import { mergeClasses as e } from "../../utils/merge-class.js";
2
2
  import { TextRefinementState as t } from "../../hooks/useTextRefinement.js";
3
- import { DIAL_ICON_SIZE as n, DIAL_KIT_ICON_STROKE as r, ElementSize as i, ErrorText as a, GhostButton as o, Label as s, Spinner as c } from "@epam/ai-dial-ui-kit";
4
- import { useRef as l } from "react";
5
- import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
6
- import { IconSparkles as p } from "@tabler/icons-react";
3
+ import { CaptionText as n, DIAL_ICON_SIZE as r, DIAL_KIT_ICON_STROKE as i, ElementSize as a, ErrorText as o, GhostButton as s, Label as c, Spinner as l } from "@epam/ai-dial-ui-kit";
4
+ import { useRef as u } from "react";
5
+ import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
6
+ import { IconSparkles as m } from "@tabler/icons-react";
7
7
  //#region src/components/TextRefinementField/TextRefinementField.tsx
8
- var m = ({ isEnabled: m, fieldId: h, label: g, labelClassName: _, required: v, labels: y, refinement: b, disabled: x, feedbackClassName: S, errorClassName: C, children: w }) => {
9
- let T = l(null);
10
- if (!m) return /* @__PURE__ */ d(u, { children: w });
11
- let E = b.state === t.Error, D = {
8
+ var h = ({ isEnabled: h, fieldId: g, label: _, labelClassName: v, required: y, labels: b, refinement: x, disabled: S, feedbackClassName: C, errorClassName: w, children: T }) => {
9
+ let E = u(null);
10
+ if (!h) return /* @__PURE__ */ f(d, { children: T });
11
+ let D = x.state === t.Error, O = {
12
12
  [t.Idle]: "",
13
- [t.Pending]: y?.refinePendingAriaLabel ?? "Refining text",
14
- [t.Success]: y?.refineSuccessAriaLabel ?? "Text refined. Undo is available.",
15
- [t.Restored]: y?.refineUndoAriaLabel ?? "Original text restored.",
16
- [t.Unchanged]: y?.refineUnchangedAriaLabel ?? "No changes were needed.",
13
+ [t.Pending]: b?.refinePendingAriaLabel ?? "Refining text",
14
+ [t.Success]: b?.refineSuccessAriaLabel ?? "Text refined. Undo is available.",
15
+ [t.Restored]: b?.refineUndoAriaLabel ?? "Original text restored.",
16
+ [t.Unchanged]: b?.refineUnchangedAriaLabel ?? "No changes were needed.",
17
17
  [t.Error]: ""
18
- }[b.state];
19
- return /* @__PURE__ */ f("div", {
18
+ }[x.state];
19
+ return /* @__PURE__ */ p("div", {
20
20
  className: "flex min-w-0 flex-col gap-1",
21
21
  role: "group",
22
- "aria-labelledby": h + "-label",
23
- "aria-describedby": E ? h + "-refinement-error" : void 0,
22
+ "aria-labelledby": g + "-label",
23
+ "aria-describedby": D ? g + "-refinement-error" : void 0,
24
24
  children: [
25
- /* @__PURE__ */ f("div", {
25
+ /* @__PURE__ */ p("div", {
26
26
  className: "flex min-w-0 flex-wrap items-center gap-x-3",
27
- children: [/* @__PURE__ */ d(s, {
28
- id: h + "-label",
29
- htmlFor: h,
30
- className: _,
31
- label: g,
32
- required: v
33
- }), /* @__PURE__ */ f("div", {
34
- ref: T,
27
+ children: [/* @__PURE__ */ f(c, {
28
+ id: g + "-label",
29
+ htmlFor: g,
30
+ className: v,
31
+ label: _,
32
+ required: y
33
+ }), /* @__PURE__ */ p("div", {
34
+ ref: E,
35
35
  className: "ms-auto flex min-w-0 flex-wrap items-center",
36
- children: [/* @__PURE__ */ d(o, {
37
- size: i.Small,
38
- label: y?.refineWithAiLabel ?? "Refine with AI",
39
- disabled: x || !b.canRefine,
36
+ children: [/* @__PURE__ */ f(s, {
37
+ size: a.Small,
38
+ label: b?.refineWithAiLabel ?? "Refine with AI",
39
+ disabled: S || !x.canRefine,
40
40
  onClick: () => {
41
- b.refine();
41
+ x.refine();
42
42
  },
43
- iconBefore: b.isPending ? /* @__PURE__ */ d("span", {
43
+ iconBefore: x.isPending ? /* @__PURE__ */ f("span", {
44
44
  "aria-hidden": !0,
45
- children: /* @__PURE__ */ d(c, {
46
- size: n.SM,
45
+ children: /* @__PURE__ */ f(l, {
46
+ size: r.SM,
47
47
  ariaLabel: ""
48
48
  })
49
- }) : /* @__PURE__ */ d(p, {
50
- size: n.SM,
51
- stroke: r,
49
+ }) : /* @__PURE__ */ f(m, {
50
+ size: r.SM,
51
+ stroke: i,
52
52
  "aria-hidden": !0
53
53
  })
54
- }), b.canUndo && /* @__PURE__ */ d(o, {
55
- size: i.Small,
56
- label: y?.refineUndoLabel ?? "Undo",
57
- disabled: x,
54
+ }), x.canUndo && /* @__PURE__ */ f(s, {
55
+ size: a.Small,
56
+ label: b?.refineUndoLabel ?? "Undo",
57
+ disabled: S,
58
58
  onClick: () => {
59
- b.undo(), T.current?.querySelector("button")?.focus();
59
+ x.undo(), E.current?.querySelector("button")?.focus();
60
60
  }
61
61
  })]
62
62
  })]
63
63
  }),
64
- /* @__PURE__ */ d("div", {
65
- "aria-busy": b.isPending,
66
- children: w
64
+ /* @__PURE__ */ f("div", {
65
+ "aria-busy": x.isPending,
66
+ children: T
67
67
  }),
68
- /* @__PURE__ */ d("div", {
68
+ /* @__PURE__ */ f("div", {
69
69
  role: "status",
70
70
  "aria-live": "polite",
71
- className: S,
72
- children: D
71
+ children: /* @__PURE__ */ f(n, {
72
+ text: O,
73
+ className: C
74
+ })
73
75
  }),
74
- E && /* @__PURE__ */ d(a, {
76
+ D && /* @__PURE__ */ f(o, {
75
77
  role: "alert",
76
- id: h + "-refinement-error",
77
- className: e(S, C),
78
- text: y?.refineErrorLabel ?? "Could not refine this text. Please try again."
78
+ id: g + "-refinement-error",
79
+ className: e(C, w),
80
+ text: b?.refineErrorLabel ?? "Could not refine this text. Please try again."
79
81
  })
80
82
  ]
81
83
  });
82
84
  };
83
85
  //#endregion
84
- export { m as TextRefinementField };
86
+ export { h as TextRefinementField };
@@ -1,4 +1,4 @@
1
1
  //#region src/constants/resizable-fields.ts
2
- var e = "max-h-[50vh]", t = "--resizable-field-max-height", n = "[&_.w-md-editor:not(.w-md-editor-fullscreen)]:max-h-[var(--resizable-field-max-height,70vh)]";
2
+ var e = "max-h-[50vh]", t = "--resizable-field-max-height", n = "[&_.w-md-editor:not(.w-md-editor-fullscreen)]:max-h-[var(--resizable-field-max-height,70vh)]", r = "[&_.w-md-editor:not(.w-md-editor-fullscreen)]:!h-[var(--resizable-field-max-height,70vh)] [&_.w-md-editor-bar]:hidden";
3
3
  //#endregion
4
- export { n as MARKDOWN_EDITOR_MAX_HEIGHT_CLASS_NAME, t as RESIZABLE_FIELD_MAX_HEIGHT_CSS_VARIABLE, e as RESIZABLE_TEXTAREA_CLASS_NAME };
4
+ export { r as MARKDOWN_EDITOR_FILL_HEIGHT_CLASS_NAME, n as MARKDOWN_EDITOR_MAX_HEIGHT_CLASS_NAME, t as RESIZABLE_FIELD_MAX_HEIGHT_CSS_VARIABLE, e as RESIZABLE_TEXTAREA_CLASS_NAME };
@@ -1,309 +1,307 @@
1
1
  import { DialFileManagerActionProfile as e, DialFileManagerVariant as t } from "../file-manager-variant.js";
2
2
  import { getParentFolderPath as ee } from "../path.js";
3
- import { FileUploadStatus as n } from "../upload-batch.js";
4
- import { useGridEditingScroll as te } from "../useGridEditingScroll/useGridEditingScroll.js";
5
- import { OperationLoaderModal as ne } from "../OperationLoaderModal/OperationLoaderModal.js";
6
- import { UploadProgressModal as re } from "../UploadProgressModal/UploadProgressModal.js";
7
- import { NOT_ALLOWED_SYMBOLS_REGEXP as ie, PrimaryButton as r, Spinner as ae } from "@epam/ai-dial-ui-kit";
8
- import { memo as i, useEffect as oe, useMemo as a, useState as se } from "react";
9
- import { Fragment as ce, jsx as o, jsxs as s } from "react/jsx-runtime";
10
- import { DialFileManager as le, DialFileManagerActions as c, DialFileManagerTabs as ue, GridSelectionMode as de } from "@epam/ai-dial-react-file-manager";
3
+ import { useGridEditingScroll as n } from "../useGridEditingScroll/useGridEditingScroll.js";
4
+ import { OperationLoaderModal as te } from "../OperationLoaderModal/OperationLoaderModal.js";
5
+ import { toUploadQueueItems as ne } from "../upload-queue.js";
6
+ import { NOT_ALLOWED_SYMBOLS_REGEXP as re, PrimaryButton as ie, Spinner as ae, TransferQueue as oe } from "@epam/ai-dial-ui-kit";
7
+ import { memo as r, useCallback as se, useEffect as ce, useMemo as i, useState as le } from "react";
8
+ import { Fragment as ue, jsx as a, jsxs as o } from "react/jsx-runtime";
9
+ import { DialFileManager as de, DialFileManagerActions as s, DialFileManagerTabs as fe, GridSelectionMode as pe } from "@epam/ai-dial-react-file-manager";
11
10
  //#region src/file-manager/DialFileManagerShell/DialFileManagerShell.tsx
12
- var l = (e, t) => {
11
+ var c = (e, t) => {
13
12
  if (e.isDownloading) return t.downloadingLabel;
14
13
  if (e.isDeleting) return t.deletingLabel;
15
14
  if (e.isRenaming && !e.isMoving) return t.renamingLabel;
16
15
  if (e.isUnsharing) return t.unsharingLabel;
17
16
  if (e.isRemovingAccess) return t.removingAccessLabel;
18
- }, u = ({ controller: i, labels: u, activeTab: d, tabs: f, onTabChange: p, selectedPaths: m, onSelectedPathsChange: fe, variant: pe, actionProfile: me, autoSelectUploadedItems: he = !1, allowedFileTypes: ge, maxSelectableFileSize: h, oversizedUploadMessage: g, isRowSelectable: _, getDisabledTooltip: _e, unsupportedFileTypeTooltip: ve }) => {
19
- let { items: ye, isLoading: be, error: xe, path: v, onPathChange: Se, retry: Ce, onSearchFiles: we, isSearching: y, searchResults: b, clearSearchResults: Te, expandedPaths: x, loadedPaths: S, onExpandedPathsChange: C, onFolderPopupPathChange: w, folderPopupLoadingPaths: T, onUploadFiles: E, onUploadArchive: D, onValidateUpload: O, uploadBatchState: k, cancelUpload: A, clearUploadBatch: Ee, onCreateFolder: De, onCreateFolderValidate: Oe, onDownloadFiles: ke, isDownloading: Ae, onDeleteFiles: je, isDeleting: Me, onMoveToFiles: Ne, onRenameValidate: Pe, isRenaming: Fe, onCopyFiles: Ie, isCopying: Le, isMoving: j, cancelCopyMove: Re, uploadEnabled: M, isNewButtonDisabled: N, disabledNewButtonTooltip: P, visibleColumns: F, dateLocale: I, dateOptions: L, actionLabels: R, sharedWithMeIds: ze, sharedByMePaths: z, onUnshareFiles: Be, isUnsharing: Ve, onRemoveFilesAccess: He, isRemovingAccess: Ue, fileMetadata: B, isFileMetadataLoading: V, onGetInfo: We, clearMetadata: H } = i, [U, Ge] = se(void 0), { handleGridApiChange: Ke, reset: W } = te();
20
- oe(() => {
21
- W();
22
- }, [d, W]);
23
- let G = a(() => {
17
+ }, l = ({ controller: r, labels: l, activeTab: u, tabs: d, onTabChange: f, selectedPaths: p, onSelectedPathsChange: me, variant: he, actionProfile: ge, autoSelectUploadedItems: _e = !1, allowedFileTypes: ve, maxSelectableFileSize: m, oversizedUploadMessage: h, isRowSelectable: g, getDisabledTooltip: ye, unsupportedFileTypeTooltip: be }) => {
18
+ let { items: xe, isLoading: Se, error: Ce, path: _, onPathChange: we, retry: Te, onSearchFiles: Ee, isSearching: v, searchResults: y, clearSearchResults: De, expandedPaths: b, loadedPaths: x, onExpandedPathsChange: S, onFolderPopupPathChange: Oe, folderPopupLoadingPaths: C, onUploadFiles: w, onUploadArchive: T, onValidateUpload: ke, uploadBatchState: E, cancelUpload: D, cancelUploadFile: Ae, clearUploadBatch: O, onCreateFolder: je, onCreateFolderValidate: Me, onDownloadFiles: Ne, isDownloading: k, onDeleteFiles: Pe, isDeleting: Fe, onMoveToFiles: Ie, onRenameValidate: Le, isRenaming: Re, onCopyFiles: ze, isCopying: Be, isMoving: A, cancelCopyMove: Ve, uploadEnabled: j, isNewButtonDisabled: M, disabledNewButtonTooltip: N, visibleColumns: P, dateLocale: F, dateOptions: I, actionLabels: L, sharedWithMeIds: He, sharedByMePaths: R, onUnshareFiles: Ue, isUnsharing: We, onRemoveFilesAccess: Ge, isRemovingAccess: Ke, fileMetadata: z, isFileMetadataLoading: B, onGetInfo: qe, clearMetadata: V } = r, [H, Je] = le(void 0), { handleGridApiChange: Ye, reset: U } = n();
19
+ ce(() => {
20
+ U();
21
+ }, [u, U]);
22
+ let W = i(() => {
24
23
  let e = {};
25
- return c.Download in R && (e[c.Download] = u.downloadLabel), c.Delete in R && (e[c.Delete] = u.deleteLabel), c.Rename in R && (e[c.Rename] = u.renameLabel), c.Copy in R && (e[c.Copy] = u.copyLabel), c.Move in R && (e[c.Move] = u.moveLabel), c.Duplicate in R && (e[c.Duplicate] = u.duplicateLabel), c.Unshare in R && (e[c.Unshare] = u.unshareLabel), c.RemoveAccess in R && (e[c.RemoveAccess] = u.removeAccessLabel), e;
24
+ return s.Download in L && (e[s.Download] = l.downloadLabel), s.Delete in L && (e[s.Delete] = l.deleteLabel), s.Rename in L && (e[s.Rename] = l.renameLabel), s.Copy in L && (e[s.Copy] = l.copyLabel), s.Move in L && (e[s.Move] = l.moveLabel), s.Duplicate in L && (e[s.Duplicate] = l.duplicateLabel), s.Unshare in L && (e[s.Unshare] = l.unshareLabel), s.RemoveAccess in L && (e[s.RemoveAccess] = l.removeAccessLabel), e;
26
25
  }, [
27
- R,
28
- u.downloadLabel,
29
- u.deleteLabel,
30
- u.renameLabel,
31
- u.copyLabel,
32
- u.moveLabel,
33
- u.duplicateLabel,
34
- u.unshareLabel,
35
- u.removeAccessLabel
36
- ]), K = a(() => c.Info in R ? {
37
- ...G,
38
- [c.Info]: u.infoLabel
39
- } : G, [
40
- G,
41
- R,
42
- u.infoLabel
43
- ]), q = a(() => {
44
- if (m.size === 0) return !1;
45
- for (let e of m) if (!z.has(e)) return !1;
26
+ L,
27
+ l.downloadLabel,
28
+ l.deleteLabel,
29
+ l.renameLabel,
30
+ l.copyLabel,
31
+ l.moveLabel,
32
+ l.duplicateLabel,
33
+ l.unshareLabel,
34
+ l.removeAccessLabel
35
+ ]), G = i(() => s.Info in L ? {
36
+ ...W,
37
+ [s.Info]: l.infoLabel
38
+ } : W, [
39
+ W,
40
+ L,
41
+ l.infoLabel
42
+ ]), K = i(() => {
43
+ if (p.size === 0) return !1;
44
+ for (let e of p) if (!R.has(e)) return !1;
46
45
  return !0;
47
- }, [m, z]), J = a(() => {
48
- if (q) return G;
49
- let { [c.RemoveAccess]: e, ...t } = G;
46
+ }, [p, R]), q = i(() => {
47
+ if (K) return W;
48
+ let { [s.RemoveAccess]: e, ...t } = W;
50
49
  return t;
51
- }, [G, q]), qe = a(() => ({
52
- selectionMode: de.MULTIPLE,
53
- visibleColumns: F,
54
- dateLocale: I,
55
- dateOptions: L,
50
+ }, [W, K]), Xe = i(() => ({
51
+ selectionMode: pe.MULTIPLE,
52
+ visibleColumns: P,
53
+ dateLocale: F,
54
+ dateOptions: I,
56
55
  additionalGridOptions: {
57
56
  domLayout: "normal",
58
57
  rowSelection: {
59
58
  mode: "multiRow",
60
- isRowSelectable: _ ?? (() => !0)
59
+ isRowSelectable: g ?? (() => !0)
61
60
  }
62
61
  },
63
- actionLabels: K
62
+ actionLabels: G
64
63
  }), [
64
+ P,
65
65
  F,
66
66
  I,
67
- L,
68
- K,
69
- _
70
- ]), Je = a(() => ({
71
- header: u.treeHeaderByTab[d],
72
- tabs: f,
73
- activeTab: d,
74
- onTabChange: p,
75
- expandedPaths: x,
76
- loadedPaths: S,
77
- loadingPaths: T,
78
- onExpandedPathsChange: C,
79
- actionLabels: G
67
+ G,
68
+ g
69
+ ]), Ze = i(() => ({
70
+ header: l.treeHeaderByTab[u],
71
+ tabs: d,
72
+ activeTab: u,
73
+ onTabChange: f,
74
+ expandedPaths: b,
75
+ loadedPaths: x,
76
+ loadingPaths: C,
77
+ onExpandedPathsChange: S,
78
+ actionLabels: W
80
79
  }), [
81
- u.treeHeaderByTab,
82
- f,
80
+ l.treeHeaderByTab,
83
81
  d,
84
- p,
82
+ u,
83
+ f,
84
+ b,
85
85
  x,
86
- S,
87
- T,
88
86
  C,
89
- G
90
- ]), Y = pe === t.Standalone && me === e.Full && d === ue.MyFiles && M, Ye = a(() => ({
87
+ S,
88
+ W
89
+ ]), J = he === t.Standalone && ge === e.Full && u === fe.MyFiles && j, Qe = i(() => ({
91
90
  showHiddenFilesToggle: !0,
92
- hiddenFilesSwitcherLabel: u.hiddenFilesLabel,
93
- showHiddenFilesLabel: u.showHiddenFilesLabel,
94
- hideHiddenFilesLabel: u.hideHiddenFilesLabel,
95
- isNewButtonDisabled: N,
96
- disabledNewButtonTooltip: P,
91
+ hiddenFilesSwitcherLabel: l.hiddenFilesLabel,
92
+ showHiddenFilesLabel: l.showHiddenFilesLabel,
93
+ hideHiddenFilesLabel: l.hideHiddenFilesLabel,
94
+ isNewButtonDisabled: M,
95
+ disabledNewButtonTooltip: N,
97
96
  newActions: {
98
97
  uploadFiles: {
99
- label: u.uploadFilesLabel,
98
+ label: l.uploadFilesLabel,
100
99
  icon: null
101
100
  },
102
101
  newFolder: {
103
- label: u.newFolderLabel,
102
+ label: l.newFolderLabel,
104
103
  icon: null
105
104
  },
106
- ...Y ? { uploadArchive: {
107
- label: u.uploadArchiveAction,
105
+ ...J ? { uploadArchive: {
106
+ label: l.uploadArchiveAction,
108
107
  icon: null
109
108
  } } : {}
110
109
  }
111
110
  }), [
112
- u.hiddenFilesLabel,
113
- u.showHiddenFilesLabel,
114
- u.hideHiddenFilesLabel,
111
+ l.hiddenFilesLabel,
112
+ l.showHiddenFilesLabel,
113
+ l.hideHiddenFilesLabel,
114
+ M,
115
115
  N,
116
- P,
117
- u.uploadFilesLabel,
118
- u.newFolderLabel,
119
- Y,
120
- u.uploadArchiveAction
121
- ]), Xe = a(() => ({
122
- getSelectionLabel: u.getSelectionLabel,
123
- actionLabels: J
124
- }), [u.getSelectionLabel, J]), Ze = a(() => ({
125
- cancelLabel: u.deleteCancelLabel,
126
- confirmLabel: u.deleteConfirmLabel,
127
- titleRenderer: u.deleteConfirmTitle,
128
- contentRenderer: u.deleteConfirmBody
116
+ l.uploadFilesLabel,
117
+ l.newFolderLabel,
118
+ J,
119
+ l.uploadArchiveAction
120
+ ]), $e = i(() => ({
121
+ getSelectionLabel: l.getSelectionLabel,
122
+ actionLabels: q
123
+ }), [l.getSelectionLabel, q]), et = i(() => ({
124
+ cancelLabel: l.deleteCancelLabel,
125
+ confirmLabel: l.deleteConfirmLabel,
126
+ titleRenderer: l.deleteConfirmTitle,
127
+ contentRenderer: l.deleteConfirmBody
129
128
  }), [
130
- u.deleteCancelLabel,
131
- u.deleteConfirmLabel,
132
- u.deleteConfirmTitle,
133
- u.deleteConfirmBody
134
- ]), Qe = a(() => {
129
+ l.deleteCancelLabel,
130
+ l.deleteConfirmLabel,
131
+ l.deleteConfirmTitle,
132
+ l.deleteConfirmBody
133
+ ]), tt = i(() => {
135
134
  let e;
136
- for (let t of m) {
135
+ for (let t of p) {
137
136
  let n = ee(t);
138
137
  if (e === void 0) e = n;
139
138
  else if (e !== n) return;
140
139
  }
141
140
  return e;
142
- }, [m]), X = U != null && T.has(U), Z = X ? U : Qe, $e = a(() => ({
143
- copyLabel: u.copyLabel,
144
- moveLabel: u.moveLabel,
145
- addFolderLabel: u.addFolderLabel,
146
- hiddenFilesSwitcherLabel: u.hiddenFilesSwitcherLabel,
147
- getCopyHeader: u.getCopyHeader,
148
- getMoveHeader: u.getMoveHeader,
149
- disabledPathTooltip: X ? u.folderPickerLoadingTooltip : u.moveSourceDisabledTooltip,
150
- emptyStateTitle: u.folderPickerEmptyStateTitle,
151
- emptyStateDescription: u.folderPickerEmptyStateDescription,
152
- sourceFolder: Z,
153
- destinationFolderPath: U,
154
- setDestinationFolderPath: Ge,
155
- filesLoading: X
141
+ }, [p]), Y = H != null && C.has(H), X = Y ? H : tt, nt = i(() => ({
142
+ copyLabel: l.copyLabel,
143
+ moveLabel: l.moveLabel,
144
+ addFolderLabel: l.addFolderLabel,
145
+ hiddenFilesSwitcherLabel: l.hiddenFilesSwitcherLabel,
146
+ getCopyHeader: l.getCopyHeader,
147
+ getMoveHeader: l.getMoveHeader,
148
+ disabledPathTooltip: Y ? l.folderPickerLoadingTooltip : l.moveSourceDisabledTooltip,
149
+ emptyStateTitle: l.folderPickerEmptyStateTitle,
150
+ emptyStateDescription: l.folderPickerEmptyStateDescription,
151
+ sourceFolder: X,
152
+ destinationFolderPath: H,
153
+ setDestinationFolderPath: Je,
154
+ filesLoading: Y
156
155
  }), [
157
- u.copyLabel,
158
- u.moveLabel,
159
- u.addFolderLabel,
160
- u.hiddenFilesSwitcherLabel,
161
- u.getCopyHeader,
162
- u.getMoveHeader,
163
- u.folderPickerLoadingTooltip,
164
- u.moveSourceDisabledTooltip,
165
- u.folderPickerEmptyStateTitle,
166
- u.folderPickerEmptyStateDescription,
156
+ l.copyLabel,
157
+ l.moveLabel,
158
+ l.addFolderLabel,
159
+ l.hiddenFilesSwitcherLabel,
160
+ l.getCopyHeader,
161
+ l.getMoveHeader,
162
+ l.folderPickerLoadingTooltip,
163
+ l.moveSourceDisabledTooltip,
164
+ l.folderPickerEmptyStateTitle,
165
+ l.folderPickerEmptyStateDescription,
166
+ Y,
167
167
  X,
168
- Z,
169
- U
170
- ]), et = () => {
171
- A(), Ee();
172
- }, tt = a(() => ({
173
- fileMetadata: B,
174
- loading: V,
175
- clearMetadata: H,
176
- header: u.metadataHeader,
177
- nameLabel: u.metadataNameLabel,
178
- pathLabel: u.metadataPathLabel,
179
- modifiedDateLabel: u.metadataModifiedDateLabel,
180
- sizeLabel: u.metadataSizeLabel,
181
- authorLabel: u.metadataAuthorLabel
168
+ H
169
+ ]), rt = se(() => {
170
+ D(), O();
171
+ }, [D, O]), Z = i(() => ne(E?.files ?? []), [E]), it = i(() => ({
172
+ fileMetadata: z,
173
+ loading: B,
174
+ clearMetadata: V,
175
+ header: l.metadataHeader,
176
+ nameLabel: l.metadataNameLabel,
177
+ pathLabel: l.metadataPathLabel,
178
+ modifiedDateLabel: l.metadataModifiedDateLabel,
179
+ sizeLabel: l.metadataSizeLabel,
180
+ authorLabel: l.metadataAuthorLabel
182
181
  }), [
182
+ z,
183
183
  B,
184
184
  V,
185
- H,
186
- u.metadataHeader,
187
- u.metadataNameLabel,
188
- u.metadataPathLabel,
189
- u.metadataModifiedDateLabel,
190
- u.metadataSizeLabel,
191
- u.metadataAuthorLabel
192
- ]), Q = l({
193
- isDownloading: Ae,
194
- isDeleting: Me,
195
- isRenaming: Fe,
196
- isMoving: j,
197
- isUnsharing: Ve,
198
- isRemovingAccess: Ue
199
- }, u), nt = a(() => {
200
- if (k == null) return "";
201
- let e = k.files.filter((e) => e.status !== n.Uploading).length;
202
- return u.getUploadProgressText(e, k.files.length);
203
- }, [k, u]), $ = a(() => b != null && !y ? {
204
- title: u.searchEmptyStateTitle,
185
+ l.metadataHeader,
186
+ l.metadataNameLabel,
187
+ l.metadataPathLabel,
188
+ l.metadataModifiedDateLabel,
189
+ l.metadataSizeLabel,
190
+ l.metadataAuthorLabel
191
+ ]), Q = c({
192
+ isDownloading: k,
193
+ isDeleting: Fe,
194
+ isRenaming: Re,
195
+ isMoving: A,
196
+ isUnsharing: We,
197
+ isRemovingAccess: Ke
198
+ }, l), $ = i(() => y != null && !v ? {
199
+ title: l.searchEmptyStateTitle,
205
200
  description: ""
206
- } : v.split("/").filter(Boolean).length > 1 ? {
207
- title: u.folderEmptyStateTitle,
201
+ } : _.split("/").filter(Boolean).length > 1 ? {
202
+ title: l.folderEmptyStateTitle,
208
203
  description: ""
209
- } : u.emptyStateByTab[d], [
210
- b,
204
+ } : l.emptyStateByTab[u], [
211
205
  y,
212
206
  v,
213
- u.searchEmptyStateTitle,
214
- u.folderEmptyStateTitle,
215
- u.emptyStateByTab,
216
- d
207
+ _,
208
+ l.searchEmptyStateTitle,
209
+ l.folderEmptyStateTitle,
210
+ l.emptyStateByTab,
211
+ u
217
212
  ]);
218
- return /* @__PURE__ */ s(ce, { children: [
219
- xe == null ? /* @__PURE__ */ s("div", {
213
+ return /* @__PURE__ */ o(ue, { children: [
214
+ Ce == null ? /* @__PURE__ */ o("div", {
220
215
  className: "relative flex min-h-0 w-full grow overflow-auto bg-layer-sunken",
221
- children: [/* @__PURE__ */ o(le, {
216
+ children: [/* @__PURE__ */ a(de, {
222
217
  className: "min-h-0 w-full grow bg-layer-sunken",
223
218
  gridClassName: "size-full",
224
- items: ye,
225
- path: v,
226
- onPathChange: Se,
227
- onGridApiChange: Ke,
228
- filesLoading: be,
229
- allowedFileTypes: ge,
230
- maxSelectableFileSize: h,
231
- maxFileSize: h,
232
- uploadValidationMessages: g == null ? void 0 : { oversizedFiles: g },
233
- selectedPaths: m,
234
- onSelectedPathsChange: fe,
219
+ items: xe,
220
+ path: _,
221
+ onPathChange: we,
222
+ onGridApiChange: Ye,
223
+ filesLoading: Se,
224
+ allowedFileTypes: ve,
225
+ maxSelectableFileSize: m,
226
+ maxFileSize: m,
227
+ uploadValidationMessages: h == null ? void 0 : { oversizedFiles: h },
228
+ selectedPaths: p,
229
+ onSelectedPathsChange: me,
235
230
  navigationPanelOptions: { searchable: !0 },
236
231
  hideSearchPathItemName: !0,
237
- onSearchFiles: we,
238
- searchInProgress: y,
239
- searchResults: b ?? [],
240
- clearSearchResults: Te,
241
- gridOptions: qe,
242
- treeOptions: Je,
243
- onFolderPopupPathChange: w,
244
- toolbarOptions: Ye,
245
- bulkActionsToolbarOptions: Xe,
246
- autoSelectUploadedItems: he,
232
+ onSearchFiles: Ee,
233
+ searchInProgress: v,
234
+ searchResults: y ?? [],
235
+ clearSearchResults: De,
236
+ gridOptions: Xe,
237
+ treeOptions: Ze,
238
+ onFolderPopupPathChange: Oe,
239
+ toolbarOptions: Qe,
240
+ bulkActionsToolbarOptions: $e,
241
+ autoSelectUploadedItems: _e,
247
242
  emptyStateTitle: $.title,
248
243
  emptyStateDescription: $.description,
249
- uploadEnabled: M,
250
- sharedWithMeIds: ze,
251
- sharedByMePaths: z,
252
- onUnshareFiles: Be,
253
- onRemoveFilesAccess: He,
254
- fileMetadataPopupOptions: tt,
255
- onGetInfo: We,
256
- onUploadFiles: E,
257
- onUploadArchive: D,
258
- onValidateUpload: O,
259
- onCreateFolder: De,
260
- onCreateFolderValidate: Oe,
261
- onDownloadFiles: ke,
262
- onDeleteFiles: je,
263
- onMoveToFiles: Ne,
264
- onCopyFiles: Ie,
265
- onRenameValidate: Pe,
266
- renameValidationMessages: u.renameValidationMessages,
267
- isRenameFileAvailable: M,
268
- deleteConfirmationOptions: Ze,
269
- conflictResolutionPopupOptions: u.conflictResolutionPopupOptions,
270
- destinationFolderPopupOptions: $e,
271
- forbiddenSymbolsRegExp: ie,
272
- forbiddenSymbolsTooltip: u.forbiddenSymbolsTooltip,
273
- getDisabledTooltip: _e,
274
- unsupportedFileTypeTooltip: ve
275
- }), Q != null && /* @__PURE__ */ o("div", {
244
+ uploadEnabled: j,
245
+ sharedWithMeIds: He,
246
+ sharedByMePaths: R,
247
+ onUnshareFiles: Ue,
248
+ onRemoveFilesAccess: Ge,
249
+ fileMetadataPopupOptions: it,
250
+ onGetInfo: qe,
251
+ onUploadFiles: w,
252
+ onUploadArchive: T,
253
+ onValidateUpload: ke,
254
+ onCreateFolder: je,
255
+ onCreateFolderValidate: Me,
256
+ onDownloadFiles: Ne,
257
+ onDeleteFiles: Pe,
258
+ onMoveToFiles: Ie,
259
+ onCopyFiles: ze,
260
+ onRenameValidate: Le,
261
+ renameValidationMessages: l.renameValidationMessages,
262
+ isRenameFileAvailable: j,
263
+ deleteConfirmationOptions: et,
264
+ conflictResolutionPopupOptions: l.conflictResolutionPopupOptions,
265
+ destinationFolderPopupOptions: nt,
266
+ forbiddenSymbolsRegExp: re,
267
+ forbiddenSymbolsTooltip: l.forbiddenSymbolsTooltip,
268
+ getDisabledTooltip: ye,
269
+ unsupportedFileTypeTooltip: be
270
+ }), Q != null && /* @__PURE__ */ a("div", {
276
271
  "aria-live": "polite",
277
272
  className: "absolute inset-0 z-[52] flex items-center justify-center bg-backdrop desktop:p-4",
278
- children: /* @__PURE__ */ o(ae, {
273
+ children: /* @__PURE__ */ a(ae, {
279
274
  size: 32,
280
275
  fullWidth: !1,
281
276
  ariaLabel: Q
282
277
  })
283
278
  })]
284
- }) : /* @__PURE__ */ s("div", {
279
+ }) : /* @__PURE__ */ o("div", {
285
280
  role: "alert",
286
281
  className: "flex flex-col items-center gap-4 p-6",
287
- children: [/* @__PURE__ */ o("p", { children: u.errorMessage }), /* @__PURE__ */ o(r, {
288
- label: u.retryLabel,
289
- onClick: Ce
282
+ children: [/* @__PURE__ */ a("p", { children: l.errorMessage }), /* @__PURE__ */ a(ie, {
283
+ label: l.retryLabel,
284
+ onClick: Te
290
285
  })]
291
286
  }),
292
- k != null && /* @__PURE__ */ o(re, {
293
- batchState: k,
294
- uploadProgressTitle: u.uploadProgressTitle,
295
- uploadProgressText: nt,
296
- cancelLabel: u.cancelLabel,
297
- onCancel: et
287
+ /* @__PURE__ */ a("div", {
288
+ className: "fixed bottom-4 end-4 z-[70]",
289
+ children: /* @__PURE__ */ a(oe, {
290
+ title: l.getUploadQueueTitle(Z.length),
291
+ items: Z,
292
+ onClose: rt,
293
+ onCancelItem: Ae,
294
+ labels: l.uploadQueueLabels
295
+ })
298
296
  }),
299
- (Le || j) && /* @__PURE__ */ o(ne, {
300
- title: j ? u.operationLoaderMoveTitle : u.operationLoaderCopyTitle,
301
- text: j ? u.movingLabel : u.copyingLabel,
302
- cancelLabel: u.operationLoaderCancelLabel,
303
- onCancel: Re
297
+ (Be || A) && /* @__PURE__ */ a(te, {
298
+ title: A ? l.operationLoaderMoveTitle : l.operationLoaderCopyTitle,
299
+ text: A ? l.movingLabel : l.copyingLabel,
300
+ cancelLabel: l.operationLoaderCancelLabel,
301
+ onCancel: Ve
304
302
  })
305
303
  ] });
306
304
  };
307
- i(u);
305
+ r(l);
308
306
  //#endregion
309
- export { u as DialFileManagerShell };
307
+ export { l as DialFileManagerShell };
@@ -62,9 +62,12 @@ var d = a(({ isOpen: a, onClose: d, onAttach: f, onSkippedUnsupportedFiles: p, o
62
62
  ]), { title: U, attachLabel: W, headerDescription: G, ...K } = b;
63
63
  return /* @__PURE__ */ c(r, {
64
64
  open: a,
65
- header: /* @__PURE__ */ l("div", {
66
- className: "flex flex-col gap-1",
67
- children: [/* @__PURE__ */ c("span", { children: U }), G != null && /* @__PURE__ */ c("p", {
65
+ header: G == null ? U : /* @__PURE__ */ l("div", {
66
+ className: "flex min-w-0 flex-1 flex-col gap-1",
67
+ children: [/* @__PURE__ */ c("h3", {
68
+ className: "dial-h1-text truncate text-primary",
69
+ children: U
70
+ }), /* @__PURE__ */ c("p", {
68
71
  className: "dial-small-text text-start",
69
72
  children: G
70
73
  })]
@@ -1,6 +1,6 @@
1
1
  //#region src/file-manager/upload-batch.ts
2
2
  var e = /* @__PURE__ */ function(e) {
3
3
  return e.Queued = "queued", e.Uploading = "uploading", e.Completed = "completed", e.Failed = "failed", e.Cancelled = "cancelled", e;
4
- }({});
4
+ }({}), t = (e) => e?.files.some((e) => e.status === "queued" || e.status === "uploading") ?? !1;
5
5
  //#endregion
6
- export { e as FileUploadStatus };
6
+ export { e as FileUploadStatus, t as isUploadInProgress };
@@ -0,0 +1,17 @@
1
+ import { FileUploadStatus as e } from "./upload-batch.js";
2
+ import { TransferQueueItemStatus as t } from "@epam/ai-dial-ui-kit";
3
+ //#region src/file-manager/upload-queue.ts
4
+ var n = {
5
+ [e.Queued]: t.InProgress,
6
+ [e.Uploading]: t.InProgress,
7
+ [e.Completed]: t.Success,
8
+ [e.Failed]: t.Failed,
9
+ [e.Cancelled]: t.Canceled
10
+ }, r = (e) => e.map((e) => ({
11
+ id: e.id,
12
+ name: e.name,
13
+ status: n[e.status],
14
+ percent: e.percent
15
+ }));
16
+ //#endregion
17
+ export { r as toUploadQueueItems };
package/file-manager.d.ts CHANGED
@@ -13,6 +13,8 @@ import { FileManagerColumnKey } from '@epam/ai-dial-react-file-manager';
13
13
  import { FileManagerGridRow } from '@epam/ai-dial-react-file-manager';
14
14
  import { FileTreeOptions } from '@epam/ai-dial-react-file-manager';
15
15
  import { ReactNode } from 'react';
16
+ import { TransferQueueItem } from '@epam/ai-dial-ui-kit';
17
+ import { TransferQueueLabels } from '@epam/ai-dial-ui-kit';
16
18
 
17
19
  /** Result returned by the file-manager attach modal when the user confirms a selection. */
18
20
  declare interface AttachResult {
@@ -62,7 +64,7 @@ declare interface DialFileManagerShellLabels {
62
64
  showHiddenFilesLabel: string;
63
65
  /** Label shown when hidden files are currently hidden. */
64
66
  hideHiddenFilesLabel: string;
65
- /** Returns a bulk-selection count label (e.g. "3 selected"). */
67
+ /** Returns the text shown after the selection-count badge; the file manager renders the count itself, so omit it (e.g. "items selected"). */
66
68
  getSelectionLabel: (count: number) => string;
67
69
  /** Label for the "Upload files" action in the New menu. */
68
70
  uploadFilesLabel: string;
@@ -122,12 +124,10 @@ declare interface DialFileManagerShellLabels {
122
124
  deleteConfirmLabel: string;
123
125
  /** Cancel-button label in the delete confirmation dialog. */
124
126
  deleteCancelLabel: string;
125
- /** Title for the upload progress modal. */
126
- uploadProgressTitle: string;
127
- /** Cancel-button label in the upload progress modal. */
128
- cancelLabel: string;
129
- /** Returns upload progress text (e.g. "3 of 5 uploaded"). */
130
- getUploadProgressText: (done: number, total: number) => string;
127
+ /** Returns the upload queue heading for the number of files in it (e.g. "Uploading 5 files"). */
128
+ getUploadQueueTitle: (count: number) => string;
129
+ /** Translated strings for the upload `TransferQueue`; unset ones fall back to the kit's English defaults. */
130
+ uploadQueueLabels?: Partial<TransferQueueLabels>;
131
131
  /** Empty-state title when a search yields no results. */
132
132
  searchEmptyStateTitle: string;
133
133
  /** Empty-state title for an empty subfolder. */
@@ -372,7 +372,9 @@ declare interface FileManagerController {
372
372
  uploadBatchState: FileUploadBatchState | null;
373
373
  /** Upload: abort all in-flight and queued uploads. */
374
374
  cancelUpload: () => void;
375
- /** Upload: dismiss the progress modal after the batch has settled. */
375
+ /** Upload: abort one queued or in-flight upload by its entry id. */
376
+ cancelUploadFile: (id: string) => void;
377
+ /** Upload: empty the upload queue. */
376
378
  clearUploadBatch: () => void;
377
379
  /** Folder creation: called when user confirms a new folder name. */
378
380
  onCreateFolder: (file: DialUploadFileItem, folderPath: string, fileId: string) => Promise<void>;
@@ -452,11 +454,11 @@ declare interface FileManagerSelectableNode {
452
454
  contentLength?: number;
453
455
  }
454
456
 
455
- /** State of an in-progress or just-settled upload batch, as returned by `useDialFileUploadBatch`. */
457
+ /** State of the upload queue, as returned by `useDialFileUploadBatch`. */
456
458
  declare interface FileUploadBatchState {
457
- /** Individual file entries in this batch. */
459
+ /** Every file uploaded since the queue was last cleared, settled ones included. */
458
460
  files: FileUploadEntry[];
459
- /** Whether the upload progress modal should be visible. */
461
+ /** Whether the upload queue should be visible. */
460
462
  isOpen: boolean;
461
463
  }
462
464
 
@@ -492,4 +494,7 @@ declare interface FileUploadValidationResult {
492
494
  /** Validation messages shown during inline rename editing. */
493
495
  declare type RenameValidationMessages = NonNullable<DialFileManagerComponentProps['renameValidationMessages']>;
494
496
 
497
+ /** Maps upload entries onto the UI kit's `TransferQueue` rows. */
498
+ export declare const toUploadQueueItems: (files: FileUploadEntry[]) => TransferQueueItem[];
499
+
495
500
  export { }
package/file-manager.js CHANGED
@@ -1,3 +1,4 @@
1
- import { DialFileManagerShell as e } from "./file-manager/DialFileManagerShell/DialFileManagerShell.js";
2
- import { FileManagerAttachModal as t } from "./file-manager/FileManagerAttachModal/FileManagerAttachModal.js";
3
- export { e as DialFileManagerShell, t as FileManagerAttachModal };
1
+ import { toUploadQueueItems as e } from "./file-manager/upload-queue.js";
2
+ import { DialFileManagerShell as t } from "./file-manager/DialFileManagerShell/DialFileManagerShell.js";
3
+ import { FileManagerAttachModal as n } from "./file-manager/FileManagerAttachModal/FileManagerAttachModal.js";
4
+ export { t as DialFileManagerShell, n as FileManagerAttachModal, e as toUploadQueueItems };
package/index.css CHANGED
@@ -1,2 +1,2 @@
1
1
  ._agentIconBadge_1ger8_1{background:var(--di-icon-bg,var(--bg-layer-sunken,#eef1f7))}._badge_1ko75_1{background:var(--ia-bg,var(--bg-visual-green-1,#cde8e5))}._initials_1ko75_5{color:var(--ia-fg,var(--text-visual-green-2,#0d6e72))}._title_11w3i_1{color:var(--ih-title-color,var(--text-primary,#161b2d))}._count_11w3i_5{color:var(--ih-count-color,var(--text-secondary,#57647a))}._container_sqe5k_1{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-code-block-border,var(--stroke-secondary,#d1dbea))}._containerLight_sqe5k_6{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc))}._header_sqe5k_10{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-code-block-border,var(--stroke-secondary,#d1dbea))}._languageLabel_sqe5k_15{color:var(--cm-code-block-language,var(--text-secondary,#57647a))}._copiedIcon_sqe5k_19{color:var(--cm-code-block-copied,var(--text-success,#007274))}._scrollContainer_sqe5k_23 .token.table,._scrollContainer_sqe5k_23 .token.table-header-row,._scrollContainer_sqe5k_23 .token.table-line,._scrollContainer_sqe5k_23 .token.table-data-rows{display:inline}._scrollContainer_sqe5k_23{scrollbar-width:thin;scrollbar-color:var(--cm-code-block-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_sqe5k_23::-webkit-scrollbar{width:4px;height:4px}._scrollContainer_sqe5k_23::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_sqe5k_23::-webkit-scrollbar-thumb{background-color:var(--cm-code-block-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}@keyframes _cm-shimmer_1g29w_1{0%{background-position:200%}to{background-position:-200%}}._thinking_1g29w_9{background:linear-gradient(270deg, var(--cm-thinking-inverted,var(--text-primary,#161b2d)) 0%, var(--cm-thinking-secondary,var(--text-secondary,#57647a)) 40%, var(--cm-thinking-inverted,var(--text-primary,#161b2d)) 80%);color:#0000;background-size:200%;-webkit-background-clip:text;background-clip:text;animation:2s linear infinite _cm-shimmer_1g29w_1}._h6_1g29w_18{color:var(--cm-h6-text,var(--text-secondary,#57647a))}._codeInline_1g29w_22{background:var(--cm-code-inline-bg,var(--bg-layer-raised,#fcfcfc));color:var(--cm-code-inline-text,var(--text-primary,#161b2d))}._secondaryBorder_1g29w_27{border-color:var(--cm-markdown-border,var(--stroke-secondary,#d1dbea))}._blockquote_1g29w_31{border-color:var(--cm-blockquote-border,var(--stroke-primary,#57647a));color:var(--cm-blockquote-text,var(--text-secondary,#57647a))}._link_1g29w_36{color:var(--cm-link-text,var(--text-accent,#1d4ed8))}._link_1g29w_36:focus-visible{outline-color:var(--cm-link-focus,var(--stroke-focus-black,#161b2d))}._scrollContainer_1f433_1{scrollbar-width:thin;scrollbar-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_1f433_1::-webkit-scrollbar{height:4px}._scrollContainer_1f433_1::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_1f433_1::-webkit-scrollbar-thumb{background-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._scrollContainer_1f433_1:focus-visible{outline:1px solid var(--cm-math-focus,var(--stroke-focus-black,#161b2d));outline-offset:2px}._mathContent_1f433_24{width:max-content;min-width:100%;display:block}._tableContainer_1fwnj_1{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-markdown-border,var(--cm-code-block-border,var(--stroke-secondary,#d1dbea)))}._tableContainerLight_1fwnj_6{background:var(--cm-code-block-bg,var(--bg-layer-base,#f5f7fa))}._copiedIcon_1fwnj_10{color:var(--cm-code-block-copied,var(--text-success,#007274))}._scrollContainer_1fwnj_14{scrollbar-width:thin;scrollbar-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_1fwnj_14::-webkit-scrollbar{width:4px;height:4px}._scrollContainer_1fwnj_14::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_1fwnj_14::-webkit-scrollbar-thumb{background-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._tableHeaderCell_1fwnj_30{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));height:3rem;color:var(--cm-table-header-text,var(--text-secondary,#57647a))}._sectionRow_1fwnj_37 td{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc))}._rowDivider_1fwnj_41{border-block-end:.5px solid var(--cm-table-row-divider,var(--stroke-tertiary,#e0e6f0))}tbody ._row_1fwnj_41:hover td{background:var(--cm-table-row-hover-bg,var(--bg-control-accent-alpha-hover,#2764d924))}._tableScrollFadeEnd_1fwnj_51{-webkit-mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);-webkit-mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}[dir=rtl] ._tableScrollFadeEnd_1fwnj_51{-webkit-mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);-webkit-mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}._tableScrollFadeStart_1fwnj_59{-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%)}[dir=rtl] ._tableScrollFadeStart_1fwnj_59{-webkit-mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);-webkit-mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%)}._tableScrollFadeBoth_1fwnj_67{-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}._tableHeader_1qvg8_1{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-markdown-border,var(--cm-code-block-border,var(--stroke-secondary,#d1dbea)))}._label_12p89_1{color:var(--pes-label-color,var(--text-primary,#161b2d))}._row_1csuq_1{border-color:var(--rs-border,var(--stroke-tertiary,#e0e6f0));background:var(--rs-bg,var(--bg-layer-sunken,#eef1f7))}._versionTag_1csuq_7{border-color:var(--rs-version-tag-border,var(--stroke-tertiary,#e0e6f0))!important;background:var(--rs-version-tag-bg,var(--bg-control-accent-alpha,#2764d90f))!important;color:var(--rs-version-tag-text,var(--text-accent,#1d4ed8))!important}
2
- /*$vite$:1*/.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.end-0{inset-inline-end:0}.end-2{inset-inline-end:.5rem}.top-0{top:0}.top-2{top:.5rem}.top-\[-6px\]{top:-6px}.z-10{z-index:10}.z-\[2\]{z-index:2}.z-\[52\]{z-index:52}.mx-0{margin-left:0;margin-right:0}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.me-1{margin-inline-end:.25rem}.me-1\.5{margin-inline-end:.375rem}.ms-auto{margin-inline-start:auto}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.size-full{height:100%;width:100%}.\!h-\[min\(800px\2c 100dvh\)\]{height:min(800px,100dvh)!important}.\!h-fit{height:-moz-fit-content!important;height:fit-content!important}.h-0{height:0}.h-\[24px\]{height:24px}.h-full{height:100%}.\!max-h-full{max-height:100%!important}.max-h-\[344px\]{max-height:344px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-10{min-height:2.5rem}.\!w-\[400px\]{width:400px!important}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.min-w-full{min-width:100%}.max-w-96{max-width:24rem}.max-w-\[30\%\]{max-width:30%}.max-w-\[45\%\]{max-width:45%}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:4px}.rounded-2xl{border-radius:1rem}.rounded-\[14px\]{border-radius:14px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-s-2{border-inline-start-width:2px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-tertiary{border-color:var(--stroke-tertiary,#e0e6f0)}.\!bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)!important}.bg-backdrop{background-color:var(--bg-backdrop,#161b2d4d)}.bg-layer-raised{background-color:var(--bg-layer-raised,#fcfcfc)}.bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-\[7px\]{padding-bottom:7px;padding-top:7px}.ps-4{padding-inline-start:1rem}.ps-\[2em\]{padding-inline-start:2em}.pt-1{padding-top:.25rem}.text-center{text-align:center}.text-start{text-align:start}.text-end{text-align:end}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.uppercase{text-transform:uppercase}.italic{font-style:italic}.text-secondary{color:var(--text-secondary,#57647a)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-chat-button{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-chat-button{--tw-shadow:0 2px 12px 0 var(--shadow-xs-1,#2764d933),0 2px 6px 0 var(--shadow-xs-2,#161b2d08);--tw-shadow-colored:0 2px 12px 0 var(--tw-shadow-color),0 2px 6px 0 var(--tw-shadow-color)}.shadow-xs{--tw-shadow:0 1px 4px 0 var(--shadow-xs-1,#2764d933),0 1px 2px 0 var(--shadow-xs-2,#161b2d08);--tw-shadow-colored:0 1px 4px 0 var(--tw-shadow-color),0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid;outline-width:1px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.\[overflow\:clip\]{overflow:clip}.\[text-wrap\:balance\]{text-wrap:balance}.\[text-wrap\:pretty\]{text-wrap:pretty}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.focus-within\:opacity-100:focus-within{opacity:1}.hover\:decoration-current:hover{text-decoration-color:currentColor}.focus-visible\:outline:focus-visible{outline-style:solid;outline-width:1px}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.group\/table:hover .group-hover\/table\:opacity-100{opacity:1}@media (max-width:1279px){.mobile\:\!w-full{width:100%!important}}@media (min-width:1280px){.desktop\:\!max-h-\[693px\]{max-height:693px!important}.desktop\:p-4{padding:1rem}}.\[\&_\.w-md-editor\:not\(\.w-md-editor-fullscreen\)\]\:max-h-\[var\(--resizable-field-max-height\2c 70vh\)\] .w-md-editor:not(.w-md-editor-fullscreen){max-height:var(--resizable-field-max-height,70vh)}.\[\&_\.wmde-markdown\>ol\]\:list-decimal .wmde-markdown>ol{list-style-type:decimal}.\[\&_\.wmde-markdown_ul\]\:list-disc .wmde-markdown ul{list-style-type:disc}.\[\&_\.wmde-markdown_ul_ul\]\:list-\[circle\] .wmde-markdown ul ul{list-style-type:circle}.\[\&_\.wmde-markdown_ul_ul_ul\]\:list-\[square\] .wmde-markdown ul ul ul{list-style-type:square}
2
+ /*$vite$:1*/.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-4{bottom:1rem}.end-0{inset-inline-end:0}.end-2{inset-inline-end:.5rem}.end-4{inset-inline-end:1rem}.top-0{top:0}.top-2{top:.5rem}.top-\[-6px\]{top:-6px}.z-10{z-index:10}.z-\[2\]{z-index:2}.z-\[52\]{z-index:52}.z-\[70\]{z-index:70}.mx-0{margin-left:0;margin-right:0}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.me-1{margin-inline-end:.25rem}.me-1\.5{margin-inline-end:.375rem}.ms-auto{margin-inline-start:auto}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.size-full{height:100%;width:100%}.\!h-\[min\(800px\2c 100dvh\)\]{height:min(800px,100dvh)!important}.\!h-fit{height:-moz-fit-content!important;height:fit-content!important}.h-0{height:0}.h-\[24px\]{height:24px}.h-full{height:100%}.\!max-h-full{max-height:100%!important}.max-h-\[344px\]{max-height:344px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.min-h-0{min-height:0}.min-h-10{min-height:2.5rem}.\!w-\[400px\]{width:400px!important}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.min-w-full{min-width:100%}.max-w-96{max-width:24rem}.max-w-\[30\%\]{max-width:30%}.max-w-\[45\%\]{max-width:45%}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-hidden{overflow-y:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:4px}.rounded-2xl{border-radius:1rem}.rounded-\[14px\]{border-radius:14px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-s-2{border-inline-start-width:2px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-tertiary{border-color:var(--stroke-tertiary,#e0e6f0)}.\!bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)!important}.bg-backdrop{background-color:var(--bg-backdrop,#161b2d4d)}.bg-layer-raised{background-color:var(--bg-layer-raised,#fcfcfc)}.bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-\[7px\]{padding-bottom:7px;padding-top:7px}.ps-4{padding-inline-start:1rem}.ps-\[2em\]{padding-inline-start:2em}.pt-1{padding-top:.25rem}.text-center{text-align:center}.text-start{text-align:start}.text-end{text-align:end}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.uppercase{text-transform:uppercase}.italic{font-style:italic}.text-primary{color:var(--text-primary,#161b2d)}.text-secondary{color:var(--text-secondary,#57647a)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-chat-button{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-chat-button{--tw-shadow:0 2px 12px 0 var(--shadow-xs-1,#2764d933),0 2px 6px 0 var(--shadow-xs-2,#161b2d08);--tw-shadow-colored:0 2px 12px 0 var(--tw-shadow-color),0 2px 6px 0 var(--tw-shadow-color)}.shadow-xs{--tw-shadow:0 1px 4px 0 var(--shadow-xs-1,#2764d933),0 1px 2px 0 var(--shadow-xs-2,#161b2d08);--tw-shadow-colored:0 1px 4px 0 var(--tw-shadow-color),0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid;outline-width:1px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.\[overflow\:clip\]{overflow:clip}.\[text-wrap\:balance\]{text-wrap:balance}.\[text-wrap\:pretty\]{text-wrap:pretty}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.focus-within\:opacity-100:focus-within{opacity:1}.hover\:decoration-current:hover{text-decoration-color:currentColor}.focus-visible\:outline:focus-visible{outline-style:solid;outline-width:1px}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.group\/table:hover .group-hover\/table\:opacity-100{opacity:1}@media (min-width:1280px){.desktop\:p-4{padding:1rem}}.\[\&_\.w-md-editor-bar\]\:hidden .w-md-editor-bar{display:none}.\[\&_\.w-md-editor\:not\(\.w-md-editor-fullscreen\)\]\:\!h-\[var\(--resizable-field-max-height\2c 70vh\)\] .w-md-editor:not(.w-md-editor-fullscreen){height:var(--resizable-field-max-height,70vh)!important}.\[\&_\.w-md-editor\:not\(\.w-md-editor-fullscreen\)\]\:max-h-\[var\(--resizable-field-max-height\2c 70vh\)\] .w-md-editor:not(.w-md-editor-fullscreen){max-height:var(--resizable-field-max-height,70vh)}.\[\&_\.wmde-markdown\>ol\]\:list-decimal .wmde-markdown>ol{list-style-type:decimal}.\[\&_\.wmde-markdown_ul\]\:list-disc .wmde-markdown ul{list-style-type:disc}.\[\&_\.wmde-markdown_ul_ul\]\:list-\[circle\] .wmde-markdown ul ul{list-style-type:circle}.\[\&_\.wmde-markdown_ul_ul_ul\]\:list-\[square\] .wmde-markdown ul ul ul{list-style-type:square}
package/index.d.ts CHANGED
@@ -20,6 +20,7 @@ import { IRowNode } from 'ag-grid-community';
20
20
  import { Options } from 'react-markdown';
21
21
  import { ReactNode } from 'react';
22
22
  import { RefObject } from 'react';
23
+ import { TransferQueueLabels } from '@epam/ai-dial-ui-kit';
23
24
 
24
25
  /** A single annotation attached to an assistant message, optionally citing a source document. */
25
26
  export declare interface Annotation {
@@ -681,7 +682,7 @@ export declare interface DialFileManagerShellLabels {
681
682
  showHiddenFilesLabel: string;
682
683
  /** Label shown when hidden files are currently hidden. */
683
684
  hideHiddenFilesLabel: string;
684
- /** Returns a bulk-selection count label (e.g. "3 selected"). */
685
+ /** Returns the text shown after the selection-count badge; the file manager renders the count itself, so omit it (e.g. "items selected"). */
685
686
  getSelectionLabel: (count: number) => string;
686
687
  /** Label for the "Upload files" action in the New menu. */
687
688
  uploadFilesLabel: string;
@@ -741,12 +742,10 @@ export declare interface DialFileManagerShellLabels {
741
742
  deleteConfirmLabel: string;
742
743
  /** Cancel-button label in the delete confirmation dialog. */
743
744
  deleteCancelLabel: string;
744
- /** Title for the upload progress modal. */
745
- uploadProgressTitle: string;
746
- /** Cancel-button label in the upload progress modal. */
747
- cancelLabel: string;
748
- /** Returns upload progress text (e.g. "3 of 5 uploaded"). */
749
- getUploadProgressText: (done: number, total: number) => string;
745
+ /** Returns the upload queue heading for the number of files in it (e.g. "Uploading 5 files"). */
746
+ getUploadQueueTitle: (count: number) => string;
747
+ /** Translated strings for the upload `TransferQueue`; unset ones fall back to the kit's English defaults. */
748
+ uploadQueueLabels?: Partial<TransferQueueLabels>;
750
749
  /** Empty-state title when a search yields no results. */
751
750
  searchEmptyStateTitle: string;
752
751
  /** Empty-state title for an empty subfolder. */
@@ -881,6 +880,15 @@ export declare interface EmptyStateCopy {
881
880
  */
882
881
  export declare const ensureDownloadFilename: (name: string, url: string | undefined, contentType: string | undefined) => string;
883
882
 
883
+ /** Maximum length of an entity's description. */
884
+ export declare const ENTITY_DESCRIPTION_MAX_LENGTH = 2000;
885
+
886
+ /** Maximum length of an entity's instructions (prompt body, system prompt, skill instructions). */
887
+ export declare const ENTITY_INSTRUCTIONS_MAX_LENGTH = 50000;
888
+
889
+ /** Maximum length of an entity's name or display name. */
890
+ export declare const ENTITY_NAME_MAX_LENGTH = 256;
891
+
884
892
  /** Background color per entity type — used for the featured chip surface. */
885
893
  export declare const ENTITY_TYPE_BG_COLOR: Record<CatalogEntityType, string>;
886
894
 
@@ -951,6 +959,9 @@ export declare interface EntityTypeLabelProps {
951
959
  className?: string;
952
960
  }
953
961
 
962
+ /** Whether `value` is longer than `maxLength` characters. */
963
+ export declare const exceedsMaxLength: (value: string, maxLength: number) => boolean;
964
+
954
965
  /** A 1-based cell address on an XLSX sheet. */
955
966
  export declare interface ExcelCellAddress {
956
967
  /** 1-based row number. */
@@ -1099,7 +1110,9 @@ export declare interface FileManagerController {
1099
1110
  uploadBatchState: FileUploadBatchState | null;
1100
1111
  /** Upload: abort all in-flight and queued uploads. */
1101
1112
  cancelUpload: () => void;
1102
- /** Upload: dismiss the progress modal after the batch has settled. */
1113
+ /** Upload: abort one queued or in-flight upload by its entry id. */
1114
+ cancelUploadFile: (id: string) => void;
1115
+ /** Upload: empty the upload queue. */
1103
1116
  clearUploadBatch: () => void;
1104
1117
  /** Folder creation: called when user confirms a new folder name. */
1105
1118
  onCreateFolder: (file: DialUploadFileItem, folderPath: string, fileId: string) => Promise<void>;
@@ -1179,11 +1192,11 @@ export declare interface FileManagerSelectableNode {
1179
1192
  contentLength?: number;
1180
1193
  }
1181
1194
 
1182
- /** State of an in-progress or just-settled upload batch, as returned by `useDialFileUploadBatch`. */
1195
+ /** State of the upload queue, as returned by `useDialFileUploadBatch`. */
1183
1196
  export declare interface FileUploadBatchState {
1184
- /** Individual file entries in this batch. */
1197
+ /** Every file uploaded since the queue was last cleared, settled ones included. */
1185
1198
  files: FileUploadEntry[];
1186
- /** Whether the upload progress modal should be visible. */
1199
+ /** Whether the upload queue should be visible. */
1187
1200
  isOpen: boolean;
1188
1201
  }
1189
1202
 
@@ -1283,6 +1296,9 @@ export declare interface GroupedAttachmentsData {
1283
1296
  layout: CustomVisualizerDataLayout;
1284
1297
  }
1285
1298
 
1299
+ /** Whether `value` contains a control character (line break, tab, NUL, …) that a single-line name must not carry. */
1300
+ export declare const hasControlCharacters: (value: string) => boolean;
1301
+
1286
1302
  /** Minimal hast shapes this plugin reads and writes. */
1287
1303
  declare interface HastNode {
1288
1304
  type: string;
@@ -1342,6 +1358,9 @@ export declare const isSkillSelectionUnsupported: (skillUrl: string | null | und
1342
1358
  /** Returns `true` when `msg` is a `StatusMessage`. */
1343
1359
  export declare const isStatusMessage: (msg: Message | StatusMessage) => msg is StatusMessage;
1344
1360
 
1361
+ /** Returns whether any file in the batch is still queued or uploading. */
1362
+ export declare const isUploadInProgress: (batchState: FileUploadBatchState | null) => boolean;
1363
+
1345
1364
  /** Item title header with optional numeric or string postfix and trailing slot. */
1346
1365
  export declare const ItemHeader: FC<ItemHeaderProps>;
1347
1366
 
@@ -1379,6 +1398,8 @@ export declare interface ItemHeaderProps {
1379
1398
  shouldTruncateTitle?: boolean;
1380
1399
  }
1381
1400
 
1401
+ export declare const MARKDOWN_EDITOR_FILL_HEIGHT_CLASS_NAME = "[&_.w-md-editor:not(.w-md-editor-fullscreen)]:!h-[var(--resizable-field-max-height,70vh)] [&_.w-md-editor-bar]:hidden";
1402
+
1382
1403
  export declare const MARKDOWN_EDITOR_MAX_HEIGHT_CLASS_NAME = "[&_.w-md-editor:not(.w-md-editor-fullscreen)]:max-h-[var(--resizable-field-max-height,70vh)]";
1383
1404
 
1384
1405
  export declare const MARKDOWN_EDITOR_PREVIEW_LIST_CLASS_NAME = "[&_.wmde-markdown>ol]:list-decimal [&_.wmde-markdown_ul]:list-disc [&_.wmde-markdown_ul_ul]:list-[circle] [&_.wmde-markdown_ul_ul_ul]:list-[square]";
@@ -2609,23 +2630,6 @@ export declare interface UploadedAttachmentResult {
2609
2630
  name: string;
2610
2631
  }
2611
2632
 
2612
- /** Modal showing per-file upload progress with a cancel action. */
2613
- export declare const UploadProgressModal: FC<UploadProgressModalProps>;
2614
-
2615
- /** Props for the upload-progress modal. */
2616
- export declare interface UploadProgressModalProps {
2617
- /** Current batch state with per-file entries and open flag. */
2618
- batchState: FileUploadBatchState;
2619
- /** Title shown in the modal header (e.g. "Uploading files"). */
2620
- uploadProgressTitle: string;
2621
- /** Summary text below the title (e.g. "3 of 5 uploaded"). */
2622
- uploadProgressText: string;
2623
- /** Label for the cancel button. */
2624
- cancelLabel: string;
2625
- /** Called when the user clicks Cancel. */
2626
- onCancel: () => void;
2627
- }
2628
-
2629
2633
  /**
2630
2634
  * Writes the height still available below an element into a CSS custom
2631
2635
  * property, so a user-resizable control inside it can be capped at the space
package/index.js CHANGED
@@ -10,59 +10,59 @@ import { MIME_TYPE_ALIASES as v, MIME_TYPE_AUDIO_PREFIX as y, MIME_TYPE_EXT_MAP
10
10
  import { getAttachmentTypeFromMime as S, getBaseMimeType as C, inferMimeTypeFromPath as w, normalizeMimeType as T, stripUrlQueryAndFragment as E } from "./utils/mime-type.js";
11
11
  import { isAnnotationSelector as D, normalizePersistedHtmlTagAttachmentType as O, normalizeRawAnnotations as k } from "./utils/annotation.js";
12
12
  import { PROHIBITED_CONVERSATION_NAME_CHARS_RE as A, getUtf8ByteLength as j, sanitizeConversationName as M, stripTrailingDots as N, truncateToUtf8Bytes as P } from "./utils/string-utils.js";
13
- import { mergeClasses as F } from "./utils/merge-class.js";
14
- import { buildCssVars as I } from "./utils/build-css-vars.js";
15
- import { isStatusMessage as L } from "./utils/message.js";
16
- import { messageAttachmentToDisplayAttachment as R, messageAttachmentsToDisplayAttachments as z } from "./utils/message-attachment-to-display.js";
17
- import { isAudioTranscriptionSupported as B } from "./utils/is-audio-transcription-supported.js";
18
- import { copyMarkdownAsRichText as V, copyToClipboard as H, markdownToRichTextHtml as U } from "./utils/copy-to-clipboard.js";
19
- import { formatLastUsed as W } from "./utils/format-last-used.js";
20
- import { formatFileSize as G } from "./utils/format-file-size.js";
21
- import { formatCost as K, formatPrice as q, formatUnitPrice as J } from "./utils/format-price.js";
22
- import { base64ToBlob as Y, downloadTextFile as X, ensureDownloadFilename as Z, getFileExtensionForLanguage as Q, triggerAnchorDownload as $, triggerBlobDownload as ee, tryBase64ToBytes as te } from "./utils/file-download.js";
23
- import { ENTITY_TYPE_BG_COLOR as ne, ENTITY_TYPE_COLOR as re } from "./constants/entity-colors.js";
24
- import { PROMPT_PARAM_DEFAULT_SEPARATOR as ie, PROMPT_PARAM_PATTERN as ae, PROMPT_VARIABLE_CLASS_NAME as oe, buildPromptParamDefaults as se, extractPromptParams as ce, rehypePromptVariables as le, resolvePromptParams as ue } from "./utils/prompt-variables.js";
25
- import { generateUUID as de } from "./utils/generate-uuid.js";
26
- import { BASE_LG_ICON_PROPS as fe, BASE_MD_ICON_PROPS as pe } from "./constants/icon.js";
27
- import { HIDDEN_FILE as me, PUBLIC_BUCKET as he } from "./constants/dial.js";
28
- import { TAG_INPUT_TAG_CLASS_NAME as ge } from "./constants/tag-input.js";
29
- import { MARKDOWN_EDITOR_MAX_HEIGHT_CLASS_NAME as _e, RESIZABLE_FIELD_MAX_HEIGHT_CSS_VARIABLE as ve, RESIZABLE_TEXTAREA_CLASS_NAME as ye } from "./constants/resizable-fields.js";
30
- import { MARKDOWN_EDITOR_PREVIEW_LIST_CLASS_NAME as be } from "./constants/markdown-editor.js";
31
- import { SELECT_LIST_MAX_HEIGHT_CLASS_NAME as xe, SELECT_LIST_MAX_HEIGHT_PX as Se } from "./constants/select-list.js";
32
- import { DESKTOP_BREAKPOINT_PX as Ce, DESKTOP_MEDIA_QUERY as we, MOBILE_MAX_WIDTH_PX as Te, MOBILE_MEDIA_QUERY as Ee } from "./constants/breakpoint.js";
33
- import { pickAvatarColor as De } from "./utils/avatar-color.js";
34
- import { extractInitials as Oe } from "./utils/initials.js";
35
- import { InitialsAvatar as ke } from "./components/InitialsAvatar/InitialsAvatar.js";
36
- import { DeploymentIcon as Ae } from "./components/DeploymentIcon/DeploymentIcon.js";
37
- import { CopyButton as je, CopyIconButton as Me } from "./components/CopyButton/CopyButton.js";
38
- import { PanelEmptyState as Ne } from "./components/PanelEmptyState/PanelEmptyState.js";
39
- import { ItemHeader as Pe } from "./components/ItemHeader/ItemHeader.js";
40
- import { EntityTypeLabel as Fe } from "./components/EntityTypeLabel/EntityTypeLabel.js";
41
- import { FeaturedChip as Ie } from "./components/FeaturedChip/FeaturedChip.js";
42
- import { EntityHeader as Le } from "./components/EntityHeader/EntityHeader.js";
43
- import { ResourceSummary as Re } from "./components/ResourceSummary/ResourceSummary.js";
44
- import { TableHeader as ze } from "./components/MarkdownRenderer/Table/TableHeader.js";
45
- import { TextRefinementState as Be, useTextRefinement as Ve } from "./hooks/useTextRefinement.js";
46
- import { TextRefinementField as He } from "./components/TextRefinementField/TextRefinementField.js";
47
- import { CHAT_SHARED_CLASS as Ue } from "./constants/public-class-names.js";
48
- import { useCodeCopy as We } from "./hooks/useCodeCopy.js";
49
- import { restrainedSyntaxTheme as Ge } from "./components/MarkdownRenderer/CodeBlock/syntax-theme.js";
50
- import { MarkdownCodeBlock as Ke } from "./components/MarkdownRenderer/CodeBlock/CodeBlock.js";
51
- import { DEFAULT_MARKDOWN_TABLE_DOWNLOAD_FILENAME as qe, MARKDOWN_TABLE_CSV_MIME_TYPE as Je, MarkdownTableCopyFormat as Ye, serializeMarkdownTableRows as Xe } from "./components/MarkdownRenderer/Table/table-serialization.js";
52
- import { MarkdownTable as Ze } from "./components/MarkdownRenderer/Table/MarkdownTable.js";
53
- import { MarkdownRenderer as Qe, defaultMarkdownComponents as $e } from "./components/MarkdownRenderer/MarkdownRenderer.js";
54
- import { COMPACT_MARKDOWN_CLASS_NAMES as et, DEFAULT_MARKDOWN_CLASS_NAMES as tt } from "./components/MarkdownRenderer/markdown-class-names.js";
55
- import { PlainTextRenderer as nt } from "./components/MarkdownRenderer/PlainTextRenderer.js";
56
- import { MDMessageViewer as rt } from "./components/MarkdownRenderer/MDMessageViewer.js";
57
- import { MarkdownWithPlaceholders as it } from "./components/MarkdownWithPlaceholders/MarkdownWithPlaceholders.js";
58
- import { useCollapsedText as at } from "./hooks/useCollapsedText.js";
59
- import { useAvailableHeightCap as ot } from "./hooks/useAvailableHeightCap.js";
60
- import { useIsMobile as st } from "./hooks/useIsMobile.js";
61
- import { DialFileManagerActionProfile as ct, DialFileManagerVariant as lt } from "./file-manager/file-manager-variant.js";
62
- import { getParentFolderPath as ut, isHiddenPath as dt } from "./file-manager/path.js";
63
- import { FileUploadStatus as ft } from "./file-manager/upload-batch.js";
64
- import { useGridEditingScroll as pt } from "./file-manager/useGridEditingScroll/useGridEditingScroll.js";
65
- import { OperationLoaderModal as mt } from "./file-manager/OperationLoaderModal/OperationLoaderModal.js";
66
- import { UploadProgressModal as ht } from "./file-manager/UploadProgressModal/UploadProgressModal.js";
67
- import { isSkillSelectionUnsupported as gt } from "./utils/is-skill-selection-unsupported.js";
68
- export { f as AttachmentErrorReason, p as AttachmentType, fe as BASE_LG_ICON_PROPS, pe as BASE_MD_ICON_PROPS, Ue as CHAT_SHARED_CLASS, et as COMPACT_MARKDOWN_CLASS_NAMES, m as CatalogEntityType, _ as CodeBlockTheme, e as ConversationTransferErrorCode, t as ConversationTransferJobStatus, n as ConversationTransferSubjectKind, r as ConversationTransferUnitKind, i as ConversationTransferWarningCode, je as CopyButton, Me as CopyIconButton, tt as DEFAULT_MARKDOWN_CLASS_NAMES, qe as DEFAULT_MARKDOWN_TABLE_DOWNLOAD_FILENAME, Ce as DESKTOP_BREAKPOINT_PX, we as DESKTOP_MEDIA_QUERY, Ae as DeploymentIcon, ct as DialFileManagerActionProfile, lt as DialFileManagerVariant, ne as ENTITY_TYPE_BG_COLOR, re as ENTITY_TYPE_COLOR, Le as EntityHeader, Fe as EntityTypeLabel, Ie as FeaturedChip, h as FileExtension, ft as FileUploadStatus, a as FilterTab, me as HIDDEN_FILE, ke as InitialsAvatar, Pe as ItemHeader, _e as MARKDOWN_EDITOR_MAX_HEIGHT_CLASS_NAME, be as MARKDOWN_EDITOR_PREVIEW_LIST_CLASS_NAME, Je as MARKDOWN_TABLE_CSV_MIME_TYPE, rt as MDMessageViewer, g as MIMEType, v as MIME_TYPE_ALIASES, y as MIME_TYPE_AUDIO_PREFIX, b as MIME_TYPE_EXT_MAP, x as MIME_TYPE_WILDCARD, Te as MOBILE_MAX_WIDTH_PX, Ee as MOBILE_MEDIA_QUERY, Ke as MarkdownCodeBlock, Qe as MarkdownRenderer, Ze as MarkdownTable, Ye as MarkdownTableCopyFormat, it as MarkdownWithPlaceholders, o as MessageRating, s as MessageRole, mt as OperationLoaderModal, A as PROHIBITED_CONVERSATION_NAME_CHARS_RE, ie as PROMPT_PARAM_DEFAULT_SEPARATOR, ae as PROMPT_PARAM_PATTERN, oe as PROMPT_VARIABLE_CLASS_NAME, he as PUBLIC_BUCKET, Ne as PanelEmptyState, nt as PlainTextRenderer, ve as RESIZABLE_FIELD_MAX_HEIGHT_CSS_VARIABLE, ye as RESIZABLE_TEXTAREA_CLASS_NAME, c as RequestStatus, Re as ResourceSummary, d as ResponseFormat, xe as SELECT_LIST_MAX_HEIGHT_CLASS_NAME, Se as SELECT_LIST_MAX_HEIGHT_PX, l as StageStatus, u as StatusEvent, ge as TAG_INPUT_TAG_CLASS_NAME, ze as TableHeader, He as TextRefinementField, Be as TextRefinementState, ht as UploadProgressModal, Y as base64ToBlob, I as buildCssVars, se as buildPromptParamDefaults, V as copyMarkdownAsRichText, H as copyToClipboard, $e as defaultMarkdownComponents, X as downloadTextFile, Z as ensureDownloadFilename, Oe as extractInitials, ce as extractPromptParams, K as formatCost, G as formatFileSize, W as formatLastUsed, q as formatPrice, J as formatUnitPrice, de as generateUUID, S as getAttachmentTypeFromMime, C as getBaseMimeType, Q as getFileExtensionForLanguage, ut as getParentFolderPath, j as getUtf8ByteLength, w as inferMimeTypeFromPath, D as isAnnotationSelector, B as isAudioTranscriptionSupported, dt as isHiddenPath, gt as isSkillSelectionUnsupported, L as isStatusMessage, U as markdownToRichTextHtml, F as mergeClasses, R as messageAttachmentToDisplayAttachment, z as messageAttachmentsToDisplayAttachments, T as normalizeMimeType, O as normalizePersistedHtmlTagAttachmentType, k as normalizeRawAnnotations, De as pickAvatarColor, le as rehypePromptVariables, ue as resolvePromptParams, Ge as restrainedSyntaxTheme, M as sanitizeConversationName, Xe as serializeMarkdownTableRows, N as stripTrailingDots, E as stripUrlQueryAndFragment, $ as triggerAnchorDownload, ee as triggerBlobDownload, P as truncateToUtf8Bytes, te as tryBase64ToBytes, ot as useAvailableHeightCap, We as useCodeCopy, at as useCollapsedText, pt as useGridEditingScroll, st as useIsMobile, Ve as useTextRefinement };
13
+ import { ENTITY_DESCRIPTION_MAX_LENGTH as F, ENTITY_INSTRUCTIONS_MAX_LENGTH as I, ENTITY_NAME_MAX_LENGTH as L, exceedsMaxLength as R, hasControlCharacters as z } from "./utils/entity-field-limits.js";
14
+ import { mergeClasses as B } from "./utils/merge-class.js";
15
+ import { buildCssVars as V } from "./utils/build-css-vars.js";
16
+ import { isStatusMessage as H } from "./utils/message.js";
17
+ import { messageAttachmentToDisplayAttachment as U, messageAttachmentsToDisplayAttachments as W } from "./utils/message-attachment-to-display.js";
18
+ import { isAudioTranscriptionSupported as G } from "./utils/is-audio-transcription-supported.js";
19
+ import { copyMarkdownAsRichText as K, copyToClipboard as q, markdownToRichTextHtml as J } from "./utils/copy-to-clipboard.js";
20
+ import { formatLastUsed as Y } from "./utils/format-last-used.js";
21
+ import { formatFileSize as X } from "./utils/format-file-size.js";
22
+ import { formatCost as Z, formatPrice as Q, formatUnitPrice as $ } from "./utils/format-price.js";
23
+ import { base64ToBlob as ee, downloadTextFile as te, ensureDownloadFilename as ne, getFileExtensionForLanguage as re, triggerAnchorDownload as ie, triggerBlobDownload as ae, tryBase64ToBytes as oe } from "./utils/file-download.js";
24
+ import { ENTITY_TYPE_BG_COLOR as se, ENTITY_TYPE_COLOR as ce } from "./constants/entity-colors.js";
25
+ import { PROMPT_PARAM_DEFAULT_SEPARATOR as le, PROMPT_PARAM_PATTERN as ue, PROMPT_VARIABLE_CLASS_NAME as de, buildPromptParamDefaults as fe, extractPromptParams as pe, rehypePromptVariables as me, resolvePromptParams as he } from "./utils/prompt-variables.js";
26
+ import { generateUUID as ge } from "./utils/generate-uuid.js";
27
+ import { BASE_LG_ICON_PROPS as _e, BASE_MD_ICON_PROPS as ve } from "./constants/icon.js";
28
+ import { HIDDEN_FILE as ye, PUBLIC_BUCKET as be } from "./constants/dial.js";
29
+ import { TAG_INPUT_TAG_CLASS_NAME as xe } from "./constants/tag-input.js";
30
+ import { MARKDOWN_EDITOR_FILL_HEIGHT_CLASS_NAME as Se, MARKDOWN_EDITOR_MAX_HEIGHT_CLASS_NAME as Ce, RESIZABLE_FIELD_MAX_HEIGHT_CSS_VARIABLE as we, RESIZABLE_TEXTAREA_CLASS_NAME as Te } from "./constants/resizable-fields.js";
31
+ import { MARKDOWN_EDITOR_PREVIEW_LIST_CLASS_NAME as Ee } from "./constants/markdown-editor.js";
32
+ import { SELECT_LIST_MAX_HEIGHT_CLASS_NAME as De, SELECT_LIST_MAX_HEIGHT_PX as Oe } from "./constants/select-list.js";
33
+ import { DESKTOP_BREAKPOINT_PX as ke, DESKTOP_MEDIA_QUERY as Ae, MOBILE_MAX_WIDTH_PX as je, MOBILE_MEDIA_QUERY as Me } from "./constants/breakpoint.js";
34
+ import { pickAvatarColor as Ne } from "./utils/avatar-color.js";
35
+ import { extractInitials as Pe } from "./utils/initials.js";
36
+ import { InitialsAvatar as Fe } from "./components/InitialsAvatar/InitialsAvatar.js";
37
+ import { DeploymentIcon as Ie } from "./components/DeploymentIcon/DeploymentIcon.js";
38
+ import { CopyButton as Le, CopyIconButton as Re } from "./components/CopyButton/CopyButton.js";
39
+ import { PanelEmptyState as ze } from "./components/PanelEmptyState/PanelEmptyState.js";
40
+ import { ItemHeader as Be } from "./components/ItemHeader/ItemHeader.js";
41
+ import { EntityTypeLabel as Ve } from "./components/EntityTypeLabel/EntityTypeLabel.js";
42
+ import { FeaturedChip as He } from "./components/FeaturedChip/FeaturedChip.js";
43
+ import { EntityHeader as Ue } from "./components/EntityHeader/EntityHeader.js";
44
+ import { ResourceSummary as We } from "./components/ResourceSummary/ResourceSummary.js";
45
+ import { TableHeader as Ge } from "./components/MarkdownRenderer/Table/TableHeader.js";
46
+ import { TextRefinementState as Ke, useTextRefinement as qe } from "./hooks/useTextRefinement.js";
47
+ import { TextRefinementField as Je } from "./components/TextRefinementField/TextRefinementField.js";
48
+ import { CHAT_SHARED_CLASS as Ye } from "./constants/public-class-names.js";
49
+ import { useCodeCopy as Xe } from "./hooks/useCodeCopy.js";
50
+ import { restrainedSyntaxTheme as Ze } from "./components/MarkdownRenderer/CodeBlock/syntax-theme.js";
51
+ import { MarkdownCodeBlock as Qe } from "./components/MarkdownRenderer/CodeBlock/CodeBlock.js";
52
+ import { DEFAULT_MARKDOWN_TABLE_DOWNLOAD_FILENAME as $e, MARKDOWN_TABLE_CSV_MIME_TYPE as et, MarkdownTableCopyFormat as tt, serializeMarkdownTableRows as nt } from "./components/MarkdownRenderer/Table/table-serialization.js";
53
+ import { MarkdownTable as rt } from "./components/MarkdownRenderer/Table/MarkdownTable.js";
54
+ import { MarkdownRenderer as it, defaultMarkdownComponents as at } from "./components/MarkdownRenderer/MarkdownRenderer.js";
55
+ import { COMPACT_MARKDOWN_CLASS_NAMES as ot, DEFAULT_MARKDOWN_CLASS_NAMES as st } from "./components/MarkdownRenderer/markdown-class-names.js";
56
+ import { PlainTextRenderer as ct } from "./components/MarkdownRenderer/PlainTextRenderer.js";
57
+ import { MDMessageViewer as lt } from "./components/MarkdownRenderer/MDMessageViewer.js";
58
+ import { MarkdownWithPlaceholders as ut } from "./components/MarkdownWithPlaceholders/MarkdownWithPlaceholders.js";
59
+ import { useCollapsedText as dt } from "./hooks/useCollapsedText.js";
60
+ import { useAvailableHeightCap as ft } from "./hooks/useAvailableHeightCap.js";
61
+ import { useIsMobile as pt } from "./hooks/useIsMobile.js";
62
+ import { DialFileManagerActionProfile as mt, DialFileManagerVariant as ht } from "./file-manager/file-manager-variant.js";
63
+ import { getParentFolderPath as gt, isHiddenPath as _t } from "./file-manager/path.js";
64
+ import { FileUploadStatus as vt, isUploadInProgress as yt } from "./file-manager/upload-batch.js";
65
+ import { useGridEditingScroll as bt } from "./file-manager/useGridEditingScroll/useGridEditingScroll.js";
66
+ import { OperationLoaderModal as xt } from "./file-manager/OperationLoaderModal/OperationLoaderModal.js";
67
+ import { isSkillSelectionUnsupported as St } from "./utils/is-skill-selection-unsupported.js";
68
+ export { f as AttachmentErrorReason, p as AttachmentType, _e as BASE_LG_ICON_PROPS, ve as BASE_MD_ICON_PROPS, Ye as CHAT_SHARED_CLASS, ot as COMPACT_MARKDOWN_CLASS_NAMES, m as CatalogEntityType, _ as CodeBlockTheme, e as ConversationTransferErrorCode, t as ConversationTransferJobStatus, n as ConversationTransferSubjectKind, r as ConversationTransferUnitKind, i as ConversationTransferWarningCode, Le as CopyButton, Re as CopyIconButton, st as DEFAULT_MARKDOWN_CLASS_NAMES, $e as DEFAULT_MARKDOWN_TABLE_DOWNLOAD_FILENAME, ke as DESKTOP_BREAKPOINT_PX, Ae as DESKTOP_MEDIA_QUERY, Ie as DeploymentIcon, mt as DialFileManagerActionProfile, ht as DialFileManagerVariant, F as ENTITY_DESCRIPTION_MAX_LENGTH, I as ENTITY_INSTRUCTIONS_MAX_LENGTH, L as ENTITY_NAME_MAX_LENGTH, se as ENTITY_TYPE_BG_COLOR, ce as ENTITY_TYPE_COLOR, Ue as EntityHeader, Ve as EntityTypeLabel, He as FeaturedChip, h as FileExtension, vt as FileUploadStatus, a as FilterTab, ye as HIDDEN_FILE, Fe as InitialsAvatar, Be as ItemHeader, Se as MARKDOWN_EDITOR_FILL_HEIGHT_CLASS_NAME, Ce as MARKDOWN_EDITOR_MAX_HEIGHT_CLASS_NAME, Ee as MARKDOWN_EDITOR_PREVIEW_LIST_CLASS_NAME, et as MARKDOWN_TABLE_CSV_MIME_TYPE, lt as MDMessageViewer, g as MIMEType, v as MIME_TYPE_ALIASES, y as MIME_TYPE_AUDIO_PREFIX, b as MIME_TYPE_EXT_MAP, x as MIME_TYPE_WILDCARD, je as MOBILE_MAX_WIDTH_PX, Me as MOBILE_MEDIA_QUERY, Qe as MarkdownCodeBlock, it as MarkdownRenderer, rt as MarkdownTable, tt as MarkdownTableCopyFormat, ut as MarkdownWithPlaceholders, o as MessageRating, s as MessageRole, xt as OperationLoaderModal, A as PROHIBITED_CONVERSATION_NAME_CHARS_RE, le as PROMPT_PARAM_DEFAULT_SEPARATOR, ue as PROMPT_PARAM_PATTERN, de as PROMPT_VARIABLE_CLASS_NAME, be as PUBLIC_BUCKET, ze as PanelEmptyState, ct as PlainTextRenderer, we as RESIZABLE_FIELD_MAX_HEIGHT_CSS_VARIABLE, Te as RESIZABLE_TEXTAREA_CLASS_NAME, c as RequestStatus, We as ResourceSummary, d as ResponseFormat, De as SELECT_LIST_MAX_HEIGHT_CLASS_NAME, Oe as SELECT_LIST_MAX_HEIGHT_PX, l as StageStatus, u as StatusEvent, xe as TAG_INPUT_TAG_CLASS_NAME, Ge as TableHeader, Je as TextRefinementField, Ke as TextRefinementState, ee as base64ToBlob, V as buildCssVars, fe as buildPromptParamDefaults, K as copyMarkdownAsRichText, q as copyToClipboard, at as defaultMarkdownComponents, te as downloadTextFile, ne as ensureDownloadFilename, R as exceedsMaxLength, Pe as extractInitials, pe as extractPromptParams, Z as formatCost, X as formatFileSize, Y as formatLastUsed, Q as formatPrice, $ as formatUnitPrice, ge as generateUUID, S as getAttachmentTypeFromMime, C as getBaseMimeType, re as getFileExtensionForLanguage, gt as getParentFolderPath, j as getUtf8ByteLength, z as hasControlCharacters, w as inferMimeTypeFromPath, D as isAnnotationSelector, G as isAudioTranscriptionSupported, _t as isHiddenPath, St as isSkillSelectionUnsupported, H as isStatusMessage, yt as isUploadInProgress, J as markdownToRichTextHtml, B as mergeClasses, U as messageAttachmentToDisplayAttachment, W as messageAttachmentsToDisplayAttachments, T as normalizeMimeType, O as normalizePersistedHtmlTagAttachmentType, k as normalizeRawAnnotations, Ne as pickAvatarColor, me as rehypePromptVariables, he as resolvePromptParams, Ze as restrainedSyntaxTheme, M as sanitizeConversationName, nt as serializeMarkdownTableRows, N as stripTrailingDots, E as stripUrlQueryAndFragment, ie as triggerAnchorDownload, ae as triggerBlobDownload, P as truncateToUtf8Bytes, oe as tryBase64ToBytes, ft as useAvailableHeightCap, Xe as useCodeCopy, dt as useCollapsedText, bt as useGridEditingScroll, pt as useIsMobile, qe as useTextRefinement };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-chat-shared",
3
3
  "description": "Shared domain models, utilities, and UI components for AI DIAL Chat libraries",
4
- "version": "1.2.0-dev.164",
4
+ "version": "1.2.0-dev.173",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "sideEffects": [
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "peerDependencies": {
34
34
  "react": "^19.2.8",
35
- "@epam/ai-dial-ui-kit": "^0.15.0-dev.20",
35
+ "@epam/ai-dial-ui-kit": "^0.15.0-dev.21",
36
36
  "@epam/ai-dial-react-file-manager": "^0.3.0-dev.13",
37
37
  "ag-grid-community": "^35.3.0"
38
38
  },
@@ -0,0 +1,4 @@
1
+ //#region src/utils/entity-field-limits.ts
2
+ var e = 256, t = 2e3, n = 5e4, r = /\p{Cc}/u, i = (e, t) => e.length > t, a = (e) => r.test(e);
3
+ //#endregion
4
+ export { t as ENTITY_DESCRIPTION_MAX_LENGTH, n as ENTITY_INSTRUCTIONS_MAX_LENGTH, e as ENTITY_NAME_MAX_LENGTH, i as exceedsMaxLength, a as hasControlCharacters };
@@ -1,47 +0,0 @@
1
- import { DialFileName as e, ElementSize as t, Popup as n, ProgressBar as r } from "@epam/ai-dial-ui-kit";
2
- import { memo as i, useCallback as a } from "react";
3
- import { jsx as o, jsxs as s } from "react/jsx-runtime";
4
- //#region src/file-manager/UploadProgressModal/UploadProgressModal.tsx
5
- var c = ({ batchState: i, uploadProgressTitle: c, uploadProgressText: l, cancelLabel: u, onCancel: d }) => {
6
- let { files: f } = i, p = a((e, n) => n === void 0 ? null : /* @__PURE__ */ o(r, {
7
- value: n,
8
- size: t.Small,
9
- "aria-label": e,
10
- "data-qa": "uploading-indicator"
11
- }), []);
12
- return /* @__PURE__ */ o(n, {
13
- className: "!h-fit !max-h-full !w-[400px] mobile:!w-full desktop:!max-h-[693px]",
14
- open: i.isOpen,
15
- closeOnOutsideClick: !1,
16
- hideClose: !0,
17
- onClose: d,
18
- mainButtons: [{
19
- label: u,
20
- onClick: d
21
- }],
22
- header: /* @__PURE__ */ s("div", {
23
- className: "flex flex-col gap-2",
24
- children: [/* @__PURE__ */ o("div", { children: c }), /* @__PURE__ */ o("div", {
25
- className: "dial-small-text text-secondary",
26
- "data-qa": "uploading-items-count",
27
- children: l
28
- })]
29
- }),
30
- children: /* @__PURE__ */ o("div", {
31
- className: "flex h-full max-h-full flex-col gap-4 px-6",
32
- children: /* @__PURE__ */ o("div", {
33
- className: "flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto",
34
- children: f.map((t) => /* @__PURE__ */ o("div", {
35
- className: "rounded bg-layer-sunken px-3 py-2",
36
- children: /* @__PURE__ */ o(e, {
37
- name: t.name,
38
- details: p(t.name, t.percent)
39
- })
40
- }, t.id))
41
- })
42
- })
43
- });
44
- };
45
- i(c);
46
- //#endregion
47
- export { c as UploadProgressModal };