@epam/ai-dial-chat-shared 1.2.5 → 1.3.0-dev.102

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 (51) hide show
  1. package/components/ConfirmationView/ConfirmationFooter.js +1 -1
  2. package/components/EntityHeader/EntityHeader.js +1 -1
  3. package/components/ItemHeader/ItemHeader.d.ts +5 -1
  4. package/components/ItemHeader/ItemHeader.d.ts.map +1 -1
  5. package/components/ItemHeader/ItemHeader.js +4 -1
  6. package/components/MarkdownRenderer/CodeBlock/CodeBlock.d.ts +2 -0
  7. package/components/MarkdownRenderer/CodeBlock/CodeBlock.d.ts.map +1 -1
  8. package/components/MarkdownRenderer/CodeBlock/CodeBlock.js +25 -25
  9. package/components/MarkdownRenderer/MDMessageViewer.d.ts +6 -2
  10. package/components/MarkdownRenderer/MDMessageViewer.d.ts.map +1 -1
  11. package/components/MarkdownRenderer/MDMessageViewer.js +14 -12
  12. package/components/MarkdownRenderer/MarkdownRenderer.d.ts +2 -0
  13. package/components/MarkdownRenderer/MarkdownRenderer.d.ts.map +1 -1
  14. package/components/MarkdownRenderer/MarkdownRenderer.js +140 -133
  15. package/components/MarkdownRenderer/Math/MarkdownMathBlock.js +1 -1
  16. package/components/MarkdownRenderer/PlainTextRenderer.js +1 -1
  17. package/components/MarkdownRenderer/Table/MarkdownTable.js +3 -3
  18. package/components/MarkdownRenderer/markdown-whitespace.d.ts +15 -0
  19. package/components/MarkdownRenderer/markdown-whitespace.d.ts.map +1 -0
  20. package/components/MarkdownRenderer/markdown-whitespace.js +18 -0
  21. package/components/TextRefinementField/TextRefinementField.d.ts +2 -0
  22. package/components/TextRefinementField/TextRefinementField.d.ts.map +1 -1
  23. package/components/TextRefinementField/TextRefinementField.js +27 -17
  24. package/entry-points/markdown.d.ts +1 -0
  25. package/entry-points/markdown.d.ts.map +1 -1
  26. package/file-manager/DialFileManagerShell/DialFileManagerShell.d.ts +6 -0
  27. package/file-manager/DialFileManagerShell/DialFileManagerShell.d.ts.map +1 -1
  28. package/file-manager/DialFileManagerShell/DialFileManagerShell.js +192 -189
  29. package/file-manager/FileManagerAttachModal/FileManagerAttachModal.js +1 -1
  30. package/file-manager/OperationLoaderModal/OperationLoaderModal.js +1 -1
  31. package/file-manager/labels.d.ts +2 -0
  32. package/file-manager/labels.d.ts.map +1 -1
  33. package/index.css +3 -2
  34. package/index.d.ts +2 -0
  35. package/index.d.ts.map +1 -1
  36. package/index.js +68 -66
  37. package/markdown.js +3 -2
  38. package/models/inline-segment.d.ts +11 -0
  39. package/models/inline-segment.d.ts.map +1 -0
  40. package/models/text-refinement.d.ts +1 -1
  41. package/models/text-refinement.d.ts.map +1 -1
  42. package/package.json +3 -3
  43. package/utils/base64-json.d.ts +14 -0
  44. package/utils/base64-json.d.ts.map +1 -0
  45. package/utils/base64-json.js +4 -0
  46. package/utils/inline-segments.d.ts +38 -0
  47. package/utils/inline-segments.d.ts.map +1 -0
  48. package/utils/inline-segments.js +53 -0
  49. package/utils/markdown-html.d.ts +14 -0
  50. package/utils/markdown-html.d.ts.map +1 -0
  51. package/utils/markdown-html.js +11 -0
@@ -2,27 +2,29 @@ import { mergeClasses as e } from "../../utils/merge-class.js";
2
2
  import { buildCssVars as t } from "../../utils/build-css-vars.js";
3
3
  import { useStreamedMarkdownContent as n } from "../../hooks/useStreamedMarkdownContent.js";
4
4
  import { preprocessLaTeX as r } from "../../utils/latex.js";
5
- import { MarkdownCodeBlock as i } from "./CodeBlock/CodeBlock.js";
6
- import a from "./MarkdownRenderer.module.scss.js";
7
- import { MarkdownMathBlock as o } from "./Math/MarkdownMathBlock.js";
8
- import s from "./Table/MarkdownTable.module.scss.js";
9
- import { MarkdownTable as c } from "./Table/MarkdownTable.js";
10
- import { MarkdownTaskCheckbox as l } from "./TaskCheckbox/MarkdownTaskCheckbox.js";
11
- import { ThinkingShimmer as u } from "./ThinkingShimmer.js";
12
- import d from "remark-gfm";
13
- import { memo as f, useEffect as p, useMemo as m, useState as h } from "react";
14
- import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
15
- import y, { defaultUrlTransform as b } from "react-markdown";
16
- import x from "rehype-raw";
17
- import S, { defaultSchema as C } from "rehype-sanitize";
18
- import w from "remark-breaks";
19
- import T from "remark-math";
5
+ import { rehypeRawAsText as i } from "../../utils/markdown-html.js";
6
+ import { MarkdownCodeBlock as a } from "./CodeBlock/CodeBlock.js";
7
+ import { rehypePreserveSpaces as o } from "./markdown-whitespace.js";
8
+ import s from "./MarkdownRenderer.module.scss.js";
9
+ import { MarkdownMathBlock as c } from "./Math/MarkdownMathBlock.js";
10
+ import l from "./Table/MarkdownTable.module.scss.js";
11
+ import { MarkdownTable as u } from "./Table/MarkdownTable.js";
12
+ import { MarkdownTaskCheckbox as d } from "./TaskCheckbox/MarkdownTaskCheckbox.js";
13
+ import { ThinkingShimmer as f } from "./ThinkingShimmer.js";
14
+ import p from "remark-gfm";
15
+ import { memo as m, useEffect as h, useMemo as g, useState as _ } from "react";
16
+ import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
17
+ import x, { defaultUrlTransform as S } from "react-markdown";
18
+ import C from "rehype-raw";
19
+ import w, { defaultSchema as T } from "rehype-sanitize";
20
+ import E from "remark-breaks";
21
+ import D from "remark-math";
20
22
  //#region src/components/MarkdownRenderer/MarkdownRenderer.tsx
21
- var E = [
22
- d,
23
- w,
24
- [T, { singleDollarTextMath: !1 }]
25
- ], D = /* @__PURE__ */ "math.maction.annotation.annotation-xml.menclose.merror.mfenced.mfrac.mi.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.semantics.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover".split("."), O = {
23
+ var O = [
24
+ p,
25
+ E,
26
+ [D, { singleDollarTextMath: !1 }]
27
+ ], k = /* @__PURE__ */ "math.maction.annotation.annotation-xml.menclose.merror.mfenced.mfrac.mi.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.semantics.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover".split("."), A = {
26
28
  math: ["display", "xmlns"],
27
29
  annotation: ["encoding"],
28
30
  mfrac: ["linethickness"],
@@ -51,231 +53,236 @@ var E = [
51
53
  "width"
52
54
  ],
53
55
  mtd: ["width"]
54
- }, k = [x], A = [S, {
55
- ...C,
56
+ }, j = [C], M = [i], N = [w, {
57
+ ...T,
56
58
  tagNames: [
57
- ...C.tagNames ?? [],
58
- ...D,
59
+ ...T.tagNames ?? [],
60
+ ...k,
59
61
  "cit"
60
62
  ],
61
63
  attributes: {
62
- ...C.attributes,
63
- ...O,
64
- code: [...C.attributes?.code ?? [], ["className"]],
64
+ ...T.attributes,
65
+ ...A,
66
+ code: [...T.attributes?.code ?? [], ["className"]],
65
67
  cit: ["dataId"],
66
- span: [...C.attributes?.span ?? [], [
68
+ span: [...T.attributes?.span ?? [], [
67
69
  "className",
68
70
  "katex",
69
71
  "katex-error"
70
72
  ]]
71
73
  }
72
- }], j = [], M = /\$\$|\\\(|\\\[/, N = (e) => M.test(e), P = {}, F = (e) => e == null ? b : (t) => b(e(t)), I = {
73
- li: ({ children: e }) => /* @__PURE__ */ _("li", {
74
+ }], P = [], F = /\$\$|\\\(|\\\[/, I = (e) => F.test(e), L = {}, R = (e) => e == null ? S : (t) => S(e(t)), z = {
75
+ li: ({ children: e }) => /* @__PURE__ */ y("li", {
74
76
  className: "mb-1.5 last:mb-0",
75
77
  children: e
76
78
  }),
77
- cit: ({ children: e, ...t }) => /* @__PURE__ */ v(g, { children: [
79
+ cit: ({ children: e, ...t }) => /* @__PURE__ */ b(v, { children: [
78
80
  t["data-id"] == null ? "<cit>" : `<cit data-id="${t["data-id"]}">`,
79
81
  e,
80
82
  "</cit>"
81
83
  ] })
82
- }, L = (e) => {
84
+ }, B = (e) => {
83
85
  let t = e?.properties?.className;
84
86
  return !Array.isArray(t) || !t.includes("katex") ? !1 : (e?.children ?? []).some((e) => e.type === "element" && e.tagName === "math" && e.properties?.display === "block");
85
- }, R = {
87
+ }, V = {
86
88
  left: "text-start",
87
89
  center: "text-center",
88
90
  right: "text-end"
89
- }, z = (e) => {
91
+ }, H = (e) => {
90
92
  let t = e?.properties?.align;
91
- return typeof t == "string" ? R[t] : void 0;
92
- }, B = (e) => e ? e.type === "text" ? e.value ?? "" : (e.children ?? []).map(B).join("") : "", V = (t, { isStreaming: n, codeBlockCopyLabel: r, codeBlockCopiedLabel: u, codeBlockDownloadLabel: d, codeBlockTheme: f, tableActionLabels: p, tableDownloadFilename: m, tableOnOpenInCanvas: h, tableScrollRegionAriaLabel: v, mathScrollRegionAriaLabel: y }) => ({
93
- h1: ({ children: e }) => /* @__PURE__ */ _("h1", {
93
+ return typeof t == "string" ? V[t] : void 0;
94
+ }, U = (e) => e ? e.type === "text" ? e.value ?? "" : (e.children ?? []).map(U).join("") : "", W = (t, { isStreaming: n, codeBlockCopyLabel: r, codeBlockCopiedLabel: i, codeBlockDownloadLabel: o, codeBlockTheme: f, tableActionLabels: p, tableDownloadFilename: m, tableOnOpenInCanvas: h, tableScrollRegionAriaLabel: g, mathScrollRegionAriaLabel: _ }) => ({
95
+ h1: ({ children: e }) => /* @__PURE__ */ y("h1", {
94
96
  className: t.h1,
95
97
  children: e
96
98
  }),
97
- h2: ({ children: e }) => /* @__PURE__ */ _("h2", {
99
+ h2: ({ children: e }) => /* @__PURE__ */ y("h2", {
98
100
  className: t.h2,
99
101
  children: e
100
102
  }),
101
- h3: ({ children: e }) => /* @__PURE__ */ _("h3", {
103
+ h3: ({ children: e }) => /* @__PURE__ */ y("h3", {
102
104
  className: t.h3,
103
105
  children: e
104
106
  }),
105
- h4: ({ children: e }) => /* @__PURE__ */ _("h4", {
107
+ h4: ({ children: e }) => /* @__PURE__ */ y("h4", {
106
108
  className: t.h4,
107
109
  children: e
108
110
  }),
109
- h5: ({ children: e }) => /* @__PURE__ */ _("h5", {
111
+ h5: ({ children: e }) => /* @__PURE__ */ y("h5", {
110
112
  className: t.h5,
111
113
  children: e
112
114
  }),
113
- h6: ({ children: n }) => /* @__PURE__ */ _("h6", {
114
- className: e(a.h6, t.h6),
115
+ h6: ({ children: n }) => /* @__PURE__ */ y("h6", {
116
+ className: e(s.h6, t.h6),
115
117
  children: n
116
118
  }),
117
- p: ({ children: n }) => /* @__PURE__ */ _("p", {
119
+ p: ({ children: n }) => /* @__PURE__ */ y("p", {
118
120
  className: e("break-words", t.p),
119
121
  children: n
120
122
  }),
121
- ul: ({ children: n }) => /* @__PURE__ */ _("ul", {
123
+ ul: ({ children: n }) => /* @__PURE__ */ y("ul", {
122
124
  className: e("list-disc ps-[2em]", t.ul),
123
125
  children: n
124
126
  }),
125
- ol: ({ children: n }) => /* @__PURE__ */ _("ol", {
127
+ ol: ({ children: n }) => /* @__PURE__ */ y("ol", {
126
128
  className: e("list-decimal ps-[2em]", t.ol),
127
129
  children: n
128
130
  }),
129
- strong: ({ children: e }) => /* @__PURE__ */ _("strong", {
131
+ strong: ({ children: e }) => /* @__PURE__ */ y("strong", {
130
132
  className: t.strong ?? "dial-body-paragraph-semi-text",
131
133
  children: e
132
134
  }),
133
- em: ({ children: e }) => /* @__PURE__ */ _("em", {
135
+ em: ({ children: e }) => /* @__PURE__ */ y("em", {
134
136
  className: t.em ?? "italic",
135
137
  children: e
136
138
  }),
137
- pre: ({ children: e }) => /* @__PURE__ */ _(g, { children: e }),
138
- code: ({ children: o, className: s }) => {
139
- let c = /language-(\w+)/.exec(s ?? "")?.[1] ?? "", l = String(o);
140
- return c || l.includes("\n") ? /* @__PURE__ */ _(i, {
141
- language: c,
142
- value: l.replace(/\n$/, ""),
139
+ pre: ({ children: e }) => /* @__PURE__ */ y(v, { children: e }),
140
+ code: ({ children: c, className: l }) => {
141
+ let u = /language-(\w+)/.exec(l ?? "")?.[1] ?? "", d = String(c);
142
+ return u || d.includes("\n") ? /* @__PURE__ */ y(a, {
143
+ language: u,
144
+ value: d.replace(/\n$/, ""),
143
145
  isStreaming: n,
144
146
  theme: f,
145
147
  copyLabel: r,
146
- copiedLabel: u,
147
- downloadLabel: d,
148
+ copiedLabel: i,
149
+ downloadLabel: o,
148
150
  containerClassName: t.codeBlockContainer,
149
151
  headerClassName: t.codeBlockHeader,
150
152
  codeClassName: t.codeFont
151
- }) : /* @__PURE__ */ _("code", {
152
- className: e("rounded px-1 py-0.5", a.codeInline, t.codeInlineFont ?? "dial-code-text", t.codeInline),
153
- children: o
153
+ }) : /* @__PURE__ */ y("code", {
154
+ className: e("rounded px-1 py-0.5", s.codeInline, t.codeInlineFont ?? "dial-code-text", t.codeInline),
155
+ children: c
154
156
  });
155
157
  },
156
- blockquote: ({ children: n }) => /* @__PURE__ */ _("blockquote", {
157
- className: e("border-s-2 py-1 ps-4", a.blockquote, t.blockquote),
158
+ blockquote: ({ children: n }) => /* @__PURE__ */ y("blockquote", {
159
+ className: e("border-s-2 py-1 ps-4", s.blockquote, t.blockquote),
158
160
  children: n
159
161
  }),
160
- a: ({ href: n, children: r }) => /* @__PURE__ */ _("a", {
162
+ a: ({ href: n, children: r }) => /* @__PURE__ */ y("a", {
161
163
  href: n,
162
164
  target: "_blank",
163
165
  rel: "noopener noreferrer",
164
- className: e("decoration-current/60 break-words underline underline-offset-2 hover:decoration-current focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2", a.link, t.link),
166
+ className: e("break-words underline decoration-current/60 underline-offset-2 hover:decoration-current focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2", s.link, t.link),
165
167
  children: r
166
168
  }),
167
- hr: () => /* @__PURE__ */ _("hr", { className: e("my-5 border-t", a.secondaryBorder, t.hr) }),
168
- del: ({ children: n }) => /* @__PURE__ */ _("del", {
169
+ hr: () => /* @__PURE__ */ y("hr", { className: e("my-5 border-t", s.secondaryBorder, t.hr) }),
170
+ del: ({ children: n }) => /* @__PURE__ */ y("del", {
169
171
  className: e("opacity-75", t.del),
170
172
  children: n
171
173
  }),
172
- input: ({ type: e, checked: t }) => e === "checkbox" ? /* @__PURE__ */ _(l, { checked: t ?? !1 }) : null,
173
- span: ({ children: e, node: n, ...r }) => L(n) ? /* @__PURE__ */ _(o, {
174
+ input: ({ type: e, checked: t }) => e === "checkbox" ? /* @__PURE__ */ y(d, { checked: t ?? !1 }) : null,
175
+ span: ({ children: e, node: n, ...r }) => B(n) ? /* @__PURE__ */ y(c, {
174
176
  className: t.mathBlock,
175
- scrollRegionAriaLabel: y,
177
+ scrollRegionAriaLabel: _,
176
178
  children: e
177
- }) : /* @__PURE__ */ _("span", {
179
+ }) : /* @__PURE__ */ y("span", {
178
180
  ...r,
179
181
  children: e
180
182
  }),
181
- table: ({ children: e }) => /* @__PURE__ */ _(c, {
183
+ table: ({ children: e }) => /* @__PURE__ */ y(u, {
182
184
  classNames: t,
183
185
  actionLabels: p,
184
186
  downloadFilename: m,
185
187
  onOpenInCanvas: h,
186
188
  isStreaming: n,
187
- scrollRegionAriaLabel: v,
189
+ scrollRegionAriaLabel: g,
188
190
  children: e
189
191
  }),
190
192
  tr: ({ children: t, node: n }) => {
191
- let r = n?.children.filter((e) => e.type === "element") ?? [], i = r.some((e) => e.tagName === "th"), a = r.filter((e) => B(e).trim().length > 0).length, o = !i && r.length > 1 && a === 1;
192
- return /* @__PURE__ */ _("tr", {
193
- className: e(s.row, o && s.sectionRow),
193
+ let r = n?.children.filter((e) => e.type === "element") ?? [], i = r.some((e) => e.tagName === "th"), a = r.filter((e) => U(e).trim().length > 0).length, o = !i && r.length > 1 && a === 1;
194
+ return /* @__PURE__ */ y("tr", {
195
+ className: e(l.row, o && l.sectionRow),
194
196
  children: t
195
197
  });
196
198
  },
197
- th: ({ children: n, node: r }) => /* @__PURE__ */ _("th", {
199
+ th: ({ children: n, node: r }) => /* @__PURE__ */ y("th", {
198
200
  scope: "col",
199
- className: e("sticky top-0 z-[2] max-w-96 whitespace-normal break-words px-3 py-2.5 text-start", z(r), s.rowDivider, s.tableHeaderCell, t.tableHeaderFont ?? "dial-tiny-lead-semi-text", t.tableCell, t.tableHeader),
201
+ className: e("sticky top-0 z-[2] max-w-96 px-3 py-2.5 text-start break-words whitespace-normal", H(r), l.rowDivider, l.tableHeaderCell, t.tableHeaderFont ?? "dial-tiny-lead-semi-text", t.tableCell, t.tableHeader),
200
202
  children: n
201
203
  }),
202
- td: ({ children: n, node: r }) => /* @__PURE__ */ _("td", {
203
- className: e("max-w-96 whitespace-normal px-3 py-[7px] align-top [overflow-wrap:anywhere]", z(r), s.rowDivider, t.tableBodyCell, t.tableCell),
204
+ td: ({ children: n, node: r }) => /* @__PURE__ */ y("td", {
205
+ className: e("max-w-96 px-3 py-[7px] align-top [overflow-wrap:anywhere] whitespace-normal", H(r), l.rowDivider, t.tableBodyCell, t.tableCell),
204
206
  children: n
205
207
  })
206
- }), H = f(({ content: i, containerClassName: a, isStreaming: o, streamCharactersPerSecond: s, classNames: c = P, components: l, urlTransform: d, rehypePlugins: f = j, thinkingLabel: g = "Thinking", codeBlockCopyLabel: v, codeBlockCopiedLabel: b, codeBlockDownloadLabel: x, codeBlockTheme: S, colors: C, tableActionLabels: w, tableDownloadFilename: T, tableOnOpenInCanvas: D, tableScrollRegionAriaLabel: O, mathScrollRegionAriaLabel: M }) => {
207
- let L = n(i, o, s), R = m(() => r(L), [L]), z = m(() => N(R), [R]), [B, H] = h(null);
208
- p(() => {
209
- if (!z || B) return;
208
+ }), G = m(({ content: i, containerClassName: a, isStreaming: s, streamCharactersPerSecond: c, classNames: l = L, components: u, urlTransform: d, rehypePlugins: p = P, isRawHtmlEnabled: m = !0, thinkingLabel: v = "Thinking", codeBlockCopyLabel: b, codeBlockCopiedLabel: S, codeBlockDownloadLabel: C, codeBlockTheme: w, colors: T, tableActionLabels: E, tableDownloadFilename: D, tableOnOpenInCanvas: k, tableScrollRegionAriaLabel: A, mathScrollRegionAriaLabel: F }) => {
209
+ let B = n(i, s, c), V = g(() => r(B), [B]), H = g(() => I(V), [V]), [U, G] = _(null);
210
+ h(() => {
211
+ if (!H || U) return;
210
212
  let e = !1;
211
213
  return (async () => {
212
214
  let [t] = await Promise.all([import("rehype-katex"), import("katex/dist/katex.min.css")]);
213
- e || H([t.default, {
215
+ e || G([t.default, {
214
216
  output: "mathml",
215
217
  strict: !1
216
218
  }]);
217
219
  })(), () => {
218
220
  e = !0;
219
221
  };
220
- }, [z, B]);
221
- let U = m(() => [
222
- ...k,
223
- ...B ? [B] : [],
224
- A,
225
- ...f
226
- ], [B, f]), W = t({
227
- "--cm-markdown-border": C?.border,
228
- "--cm-blockquote-border": C?.blockquoteBorder,
229
- "--cm-blockquote-text": C?.blockquoteText,
230
- "--cm-link-text": C?.linkText,
231
- "--cm-link-focus": C?.linkFocus,
232
- "--cm-table-header-text": C?.tableHeaderText,
233
- "--cm-h6-text": C?.headingSixText,
234
- "--cm-code-inline-bg": C?.inlineCodeBackground,
235
- "--cm-code-inline-text": C?.inlineCodeText
236
- }), G = m(() => F(d), [d]), K = m(() => ({
237
- ...V(c, {
238
- isStreaming: o,
239
- codeBlockCopyLabel: v,
240
- codeBlockCopiedLabel: b,
241
- codeBlockDownloadLabel: x,
242
- codeBlockTheme: S,
243
- tableActionLabels: w,
244
- tableDownloadFilename: T,
245
- tableOnOpenInCanvas: D,
246
- tableScrollRegionAriaLabel: O,
247
- mathScrollRegionAriaLabel: M
222
+ }, [H, U]);
223
+ let K = g(() => [
224
+ ...m ? j : M,
225
+ ...U ? [U] : [],
226
+ N,
227
+ o,
228
+ ...p
229
+ ], [
230
+ m,
231
+ U,
232
+ p
233
+ ]), q = t({
234
+ "--cm-markdown-border": T?.border,
235
+ "--cm-blockquote-border": T?.blockquoteBorder,
236
+ "--cm-blockquote-text": T?.blockquoteText,
237
+ "--cm-link-text": T?.linkText,
238
+ "--cm-link-focus": T?.linkFocus,
239
+ "--cm-table-header-text": T?.tableHeaderText,
240
+ "--cm-h6-text": T?.headingSixText,
241
+ "--cm-code-inline-bg": T?.inlineCodeBackground,
242
+ "--cm-code-inline-text": T?.inlineCodeText
243
+ }), J = g(() => R(d), [d]), Y = g(() => ({
244
+ ...W(l, {
245
+ isStreaming: s,
246
+ codeBlockCopyLabel: b,
247
+ codeBlockCopiedLabel: S,
248
+ codeBlockDownloadLabel: C,
249
+ codeBlockTheme: w,
250
+ tableActionLabels: E,
251
+ tableDownloadFilename: D,
252
+ tableOnOpenInCanvas: k,
253
+ tableScrollRegionAriaLabel: A,
254
+ mathScrollRegionAriaLabel: F
248
255
  }),
249
- ...I,
250
- ...l
256
+ ...z,
257
+ ...u
251
258
  }), [
252
- c,
253
- o,
254
- v,
259
+ l,
260
+ s,
255
261
  b,
256
- x,
257
262
  S,
263
+ C,
258
264
  w,
259
- T,
265
+ E,
260
266
  D,
261
- O,
262
- M,
263
- l
267
+ k,
268
+ A,
269
+ F,
270
+ u
264
271
  ]);
265
- return o && !L ? /* @__PURE__ */ _(u, {
266
- label: g,
267
- colors: C
268
- }) : /* @__PURE__ */ _("div", {
269
- style: W,
272
+ return s && !B ? /* @__PURE__ */ y(f, {
273
+ label: v,
274
+ colors: T
275
+ }) : /* @__PURE__ */ y("div", {
276
+ style: q,
270
277
  className: e("[overflow-wrap:anywhere]", a),
271
- children: /* @__PURE__ */ _(y, {
272
- remarkPlugins: E,
273
- rehypePlugins: U,
274
- components: K,
275
- urlTransform: G,
276
- children: R
278
+ children: /* @__PURE__ */ y(x, {
279
+ remarkPlugins: O,
280
+ rehypePlugins: K,
281
+ components: Y,
282
+ urlTransform: J,
283
+ children: V
277
284
  })
278
285
  });
279
286
  });
280
287
  //#endregion
281
- export { H as MarkdownRenderer, I as defaultMarkdownComponents };
288
+ export { G as MarkdownRenderer, z as defaultMarkdownComponents };
@@ -9,7 +9,7 @@ var o = i(({ children: i, className: o, scrollRegionAriaLabel: s = "Scrollable f
9
9
  let { scrollContainerRef: c, contentRef: l, hasContentBeyondStart: u, hasContentBeyondEnd: d, handleScroll: f } = n(), p = u || d;
10
10
  return /* @__PURE__ */ a("div", {
11
11
  ref: c,
12
- className: e("w-full min-w-0 max-w-full overflow-x-auto overflow-y-hidden", r.scrollContainer, o, t.mathBlock),
12
+ className: e("w-full max-w-full min-w-0 overflow-x-auto overflow-y-hidden", r.scrollContainer, o, t.mathBlock),
13
13
  onScroll: f,
14
14
  role: p ? "region" : void 0,
15
15
  "aria-label": p ? s : void 0,
@@ -12,7 +12,7 @@ var a = {}, o = r(({ content: r, containerClassName: o, isStreaming: s, streamCh
12
12
  }) : /* @__PURE__ */ i("div", {
13
13
  className: o,
14
14
  children: /* @__PURE__ */ i("p", {
15
- className: e(l.p, "whitespace-pre-wrap break-words [overflow-wrap:anywhere]"),
15
+ className: e(l.p, "[overflow-wrap:anywhere] break-words whitespace-pre-wrap"),
16
16
  children: f
17
17
  })
18
18
  });
@@ -44,12 +44,12 @@ var b = 2e3, x = p(({ children: p, classNames: x, colors: S, actionLabels: C, do
44
44
  }), H = V.length > 0 && !T;
45
45
  return /* @__PURE__ */ y("div", {
46
46
  style: I,
47
- className: e("group/table relative w-full min-w-0 max-w-full rounded-xl border [overflow:clip]", o.tableContainer, x.tableWrapper, i.table),
47
+ className: e("group/table relative w-full max-w-full min-w-0 [overflow:clip] rounded-xl border", o.tableContainer, x.tableWrapper, i.table),
48
48
  children: [
49
49
  H && /* @__PURE__ */ v("div", {
50
50
  className: "sticky top-0 z-10 h-0",
51
51
  children: /* @__PURE__ */ v("div", {
52
- className: "absolute end-2 top-2 flex items-center gap-1 rounded-lg border border-tertiary bg-layer-raised px-2 py-1 opacity-0 shadow-xs transition-opacity focus-within:opacity-100 group-hover/table:opacity-100",
52
+ className: "absolute inset-e-2 top-2 flex items-center gap-1 rounded-lg border border-tertiary bg-layer-raised px-2 py-1 opacity-0 shadow-xs transition-opacity group-hover/table:opacity-100 focus-within:opacity-100",
53
53
  children: V.map((e) => /* @__PURE__ */ v(f, {
54
54
  tooltipProps: { tooltip: e.label },
55
55
  "aria-label": e.label,
@@ -64,7 +64,7 @@ var b = 2e3, x = p(({ children: p, classNames: x, colors: S, actionLabels: C, do
64
64
  }),
65
65
  /* @__PURE__ */ v("div", {
66
66
  ref: j,
67
- className: e("w-full min-w-0 max-w-full overflow-x-auto", o.scrollContainer, x.tableScrollContainer, {
67
+ className: e("w-full max-w-full min-w-0 overflow-x-auto", o.scrollContainer, x.tableScrollContainer, {
68
68
  [o.tableScrollFadeBoth]: N && P,
69
69
  [o.tableScrollFadeStart]: N && !P,
70
70
  [o.tableScrollFadeEnd]: !N && P
@@ -0,0 +1,15 @@
1
+ /** Minimal hast node shape walked by {@link rehypePreserveSpaces}. */
2
+ interface HastNodeLike {
3
+ /** Node type — `'element'`, `'text'`, `'root'`, … */
4
+ type: string;
5
+ /** Tag name of an element node. */
6
+ tagName?: string;
7
+ /** Text of a text node. */
8
+ value?: string;
9
+ /** Child nodes of a parent node. */
10
+ children?: HastNodeLike[];
11
+ }
12
+ /** Rehype plugin that keeps runs of consecutive spaces in prose visible instead of letting HTML collapse them to one. */
13
+ export declare const rehypePreserveSpaces: () => (tree: HastNodeLike) => void;
14
+ export {};
15
+ //# sourceMappingURL=markdown-whitespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-whitespace.d.ts","sourceRoot":"","sources":["../../../src/components/MarkdownRenderer/markdown-whitespace.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,UAAU,YAAY;IACpB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AA8BD,yHAAyH;AACzH,eAAO,MAAM,oBAAoB,SAAU,MAAM,YAAY,SAE5D,CAAC"}
@@ -0,0 +1,18 @@
1
+ //#region src/components/MarkdownRenderer/markdown-whitespace.ts
2
+ var e = new Set([
3
+ "code",
4
+ "pre",
5
+ "math",
6
+ "script",
7
+ "style"
8
+ ]), t = "\xA0", n = / {2,}/g, r = (e) => `${t.repeat(e.length - 1)} `, i = (t) => {
9
+ if (t.type === "text" && t.value) {
10
+ t.value = t.value.replace(n, r);
11
+ return;
12
+ }
13
+ t.type === "element" && t.tagName && e.has(t.tagName) || t.children?.forEach(i);
14
+ }, a = () => (e) => {
15
+ i(e);
16
+ };
17
+ //#endregion
18
+ export { a as rehypePreserveSpaces };
@@ -23,6 +23,8 @@ export interface TextRefinementFieldProps {
23
23
  feedbackClassName?: string;
24
24
  /** Class applied to the error message, after `feedbackClassName`. */
25
25
  errorClassName?: string;
26
+ /** Caption shown at the end of the row below the control, beside the refinement status — e.g. a character counter. */
27
+ caption?: string;
26
28
  /** The refinable control, whose id must equal `fieldId`. */
27
29
  children: ReactNode;
28
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TextRefinementField.d.ts","sourceRoot":"","sources":["../../../src/components/TextRefinementField/TextRefinementField.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAU,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,uCAAuC;AACvC,MAAM,WAAW,wBAAwB;IACvC,iFAAiF;IACjF,SAAS,EAAE,OAAO,CAAC;IACnB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,8CAA8C;IAC9C,UAAU,EAAE,oBAAoB,CAAC;IACjC,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAsG5D,CAAC"}
1
+ {"version":3,"file":"TextRefinementField.d.ts","sourceRoot":"","sources":["../../../src/components/TextRefinementField/TextRefinementField.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAU,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,uCAAuC;AACvC,MAAM,WAAW,wBAAwB;IACvC,iFAAiF;IACjF,SAAS,EAAE,OAAO,CAAC;IACnB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,8CAA8C;IAC9C,UAAU,EAAE,oBAAoB,CAAC;IACjC,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sHAAsH;IACtH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CA4H5D,CAAC"}
@@ -5,13 +5,19 @@ import { useRef as u } from "react";
5
5
  import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
6
6
  import { IconSparkles as m } from "@tabler/icons-react";
7
7
  //#region src/components/TextRefinementField/TextRefinementField.tsx
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 = {
8
+ var h = ({ isEnabled: h, fieldId: g, label: _, labelClassName: v, required: y, labels: b, refinement: x, disabled: S, feedbackClassName: C, errorClassName: w, caption: T, children: E }) => {
9
+ let D = u(null), O = T && /* @__PURE__ */ f(n, {
10
+ text: T,
11
+ className: "ms-auto shrink-0 text-end"
12
+ });
13
+ if (!h) return O ? /* @__PURE__ */ p("div", {
14
+ className: "flex min-w-0 flex-col gap-1",
15
+ children: [E, O]
16
+ }) : /* @__PURE__ */ f(d, { children: E });
17
+ let k = x.state === t.Error, A = {
12
18
  [t.Idle]: "",
13
19
  [t.Pending]: b?.refinePendingAriaLabel ?? "Refining text",
14
- [t.Success]: b?.refineSuccessAriaLabel ?? "Text refined. Undo is available.",
20
+ [t.Success]: b?.refineSuccessAriaLabel ?? "Text refined",
15
21
  [t.Restored]: b?.refineUndoAriaLabel ?? "Original text restored.",
16
22
  [t.Unchanged]: b?.refineUnchangedAriaLabel ?? "No changes were needed.",
17
23
  [t.Error]: ""
@@ -20,7 +26,7 @@ var h = ({ isEnabled: h, fieldId: g, label: _, labelClassName: v, required: y, l
20
26
  className: "flex min-w-0 flex-col gap-1",
21
27
  role: "group",
22
28
  "aria-labelledby": g + "-label",
23
- "aria-describedby": D ? g + "-refinement-error" : void 0,
29
+ "aria-describedby": k ? g + "-refinement-error" : void 0,
24
30
  children: [
25
31
  /* @__PURE__ */ p("div", {
26
32
  className: "flex min-w-0 flex-wrap items-center gap-x-3",
@@ -31,7 +37,7 @@ var h = ({ isEnabled: h, fieldId: g, label: _, labelClassName: v, required: y, l
31
37
  label: _,
32
38
  required: y
33
39
  }), /* @__PURE__ */ p("div", {
34
- ref: E,
40
+ ref: D,
35
41
  className: "ms-auto flex min-w-0 flex-wrap items-center",
36
42
  children: [/* @__PURE__ */ f(s, {
37
43
  size: a.Small,
@@ -56,24 +62,28 @@ var h = ({ isEnabled: h, fieldId: g, label: _, labelClassName: v, required: y, l
56
62
  label: b?.refineUndoLabel ?? "Undo",
57
63
  disabled: S,
58
64
  onClick: () => {
59
- x.undo(), E.current?.querySelector("button")?.focus();
65
+ x.undo(), D.current?.querySelector("button")?.focus();
60
66
  }
61
67
  })]
62
68
  })]
63
69
  }),
64
70
  /* @__PURE__ */ f("div", {
65
71
  "aria-busy": x.isPending,
66
- children: T
72
+ children: E
67
73
  }),
68
- /* @__PURE__ */ f("div", {
69
- role: "status",
70
- "aria-live": "polite",
71
- children: /* @__PURE__ */ f(n, {
72
- text: O,
73
- className: C
74
- })
74
+ /* @__PURE__ */ p("div", {
75
+ className: "flex min-w-0 items-start gap-3",
76
+ children: [/* @__PURE__ */ f("div", {
77
+ role: "status",
78
+ "aria-live": "polite",
79
+ className: "min-w-0 flex-1",
80
+ children: /* @__PURE__ */ f(n, {
81
+ text: A,
82
+ className: e(C, x.isPending && "sr-only")
83
+ })
84
+ }), O]
75
85
  }),
76
- D && /* @__PURE__ */ f(o, {
86
+ k && /* @__PURE__ */ f(o, {
77
87
  role: "alert",
78
88
  id: g + "-refinement-error",
79
89
  className: e(C, w),
@@ -12,6 +12,7 @@ export * from '../components/MarkdownRenderer/CodeBlock/CodeBlock';
12
12
  export { restrainedSyntaxTheme } from '../components/MarkdownRenderer/CodeBlock/syntax-theme';
13
13
  export * from '../components/MarkdownRenderer/Table/MarkdownTable';
14
14
  export * from '../components/MarkdownWithPlaceholders/MarkdownWithPlaceholders';
15
+ export * from '../utils/inline-segments';
15
16
  export * from '../hooks/useCodeCopy';
16
17
  export * from '../hooks/useCollapsedText';
17
18
  export { CHAT_SHARED_CLASS } from '../constants/public-class-names';
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/entry-points/markdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,iDAAiD,CAAC;AAChE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,kDAAkD,CAAC;AACjE,cAAc,qDAAqD,CAAC;AACpE,cAAc,oDAAoD,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAC9F,cAAc,oDAAoD,CAAC;AACnE,cAAc,iEAAiE,CAAC;AAChF,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/entry-points/markdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,iDAAiD,CAAC;AAChE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,kDAAkD,CAAC;AACjE,cAAc,qDAAqD,CAAC;AACpE,cAAc,oDAAoD,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAC9F,cAAc,oDAAoD,CAAC;AACnE,cAAc,iEAAiE,CAAC;AAChF,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -40,6 +40,12 @@ export interface DialFileManagerShellProps {
40
40
  getDisabledTooltip?: (row: FileManagerGridRow) => string | undefined;
41
41
  /** Tooltip shown on files with an unsupported type. */
42
42
  unsupportedFileTypeTooltip?: string;
43
+ /**
44
+ * Classes for the folders-tree panel. Replaces the panel's default classes
45
+ * (including its width), so include `shrink-0` and an explicit width.
46
+ * Omit to keep the variant's default.
47
+ */
48
+ treeContainerClassName?: string;
43
49
  }
44
50
  /**
45
51
  * Renders the DialFileManager grid/tree/toolbar and its operation overlays
@@ -1 +1 @@
1
- {"version":3,"file":"DialFileManagerShell.d.ts","sourceRoot":"","sources":["../../../src/file-manager/DialFileManagerShell/DialFileManagerShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAEnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,EAML,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAEV,0BAA0B,EAE3B,MAAM,WAAW,CAAC;AAkDnB,yDAAyD;AACzD,MAAM,WAAW,yBAAyB;IACxC,8EAA8E;IAC9E,UAAU,EAAE,qBAAqB,CAAC;IAClC,qDAAqD;IACrD,MAAM,EAAE,0BAA0B,CAAC;IACnC,4BAA4B;IAC5B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,kFAAkF;IAClF,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,0CAA0C;IAC1C,WAAW,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAChD,2DAA2D;IAC3D,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,yCAAyC;IACzC,qBAAqB,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACpD,mGAAmG;IACnG,OAAO,EAAE,sBAAsB,CAAC;IAChC,wEAAwE;IACxE,aAAa,EAAE,4BAA4B,CAAC;IAC5C,gFAAgF;IAChF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACxC,6JAA6J;IAC7J,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sMAAsM;IACtM,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iFAAiF;IACjF,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,IAAI,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;KACzC,KAAK,OAAO,CAAC;IACd,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,MAAM,GAAG,SAAS,CAAC;IACrE,uDAAuD;IACvD,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CA+gB9D,CAAC;;AAEF,wBAA0C"}
1
+ {"version":3,"file":"DialFileManagerShell.d.ts","sourceRoot":"","sources":["../../../src/file-manager/DialFileManagerShell/DialFileManagerShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAEnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,EAML,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAEV,0BAA0B,EAE3B,MAAM,WAAW,CAAC;AAkDnB,yDAAyD;AACzD,MAAM,WAAW,yBAAyB;IACxC,8EAA8E;IAC9E,UAAU,EAAE,qBAAqB,CAAC;IAClC,qDAAqD;IACrD,MAAM,EAAE,0BAA0B,CAAC;IACnC,4BAA4B;IAC5B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,kFAAkF;IAClF,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,0CAA0C;IAC1C,WAAW,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAChD,2DAA2D;IAC3D,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,yCAAyC;IACzC,qBAAqB,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACpD,mGAAmG;IACnG,OAAO,EAAE,sBAAsB,CAAC;IAChC,wEAAwE;IACxE,aAAa,EAAE,4BAA4B,CAAC;IAC5C,gFAAgF;IAChF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACxC,6JAA6J;IAC7J,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sMAAsM;IACtM,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iFAAiF;IACjF,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,IAAI,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;KACzC,KAAK,OAAO,CAAC;IACd,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,MAAM,GAAG,SAAS,CAAC;IACrE,uDAAuD;IACvD,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CAohB9D,CAAC;;AAEF,wBAA0C"}