@epam/ai-dial-chat-shared 1.3.0-dev.37 → 1.3.0-dev.372
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.
- package/components/ActionMenu/ActionMenu.d.ts +26 -0
- package/components/ActionMenu/ActionMenu.d.ts.map +1 -0
- package/components/ActionMenu/ActionMenu.js +50 -0
- package/components/ConfirmationDialog/ConfirmationDialog.d.ts +6 -1
- package/components/ConfirmationDialog/ConfirmationDialog.d.ts.map +1 -1
- package/components/ConfirmationDialog/ConfirmationDialog.js +11 -9
- package/components/ConfirmationIdentityCard/ConfirmationIdentityCard.module.scss.js +5 -4
- package/components/ConfirmationIdentityRow/ConfirmationIdentityRow.js +2 -2
- package/components/ConfirmationIdentityRow/ConfirmationIdentityRow.module.scss.js +3 -2
- package/components/ConfirmationView/ConfirmationFooter.d.ts.map +1 -1
- package/components/ConfirmationView/ConfirmationFooter.js +25 -26
- package/components/ConfirmationView/ConfirmationView.d.ts +2 -0
- package/components/ConfirmationView/ConfirmationView.d.ts.map +1 -1
- package/components/ConfirmationView/ConfirmationView.js +12 -12
- package/components/ConfirmationView/ConfirmationView.module.scss.js +6 -5
- package/components/DeleteConfirmationDrawer/DeleteConfirmationDrawer.d.ts +31 -0
- package/components/DeleteConfirmationDrawer/DeleteConfirmationDrawer.d.ts.map +1 -0
- package/components/DeleteConfirmationDrawer/DeleteConfirmationDrawer.js +36 -0
- package/components/DeleteConfirmationView/DeleteConfirmationView.d.ts +3 -0
- package/components/DeleteConfirmationView/DeleteConfirmationView.d.ts.map +1 -1
- package/components/DeleteConfirmationView/DeleteConfirmationView.js +36 -27
- package/components/DeleteConfirmationView/DeleteConfirmationView.module.scss.js +5 -4
- package/components/DeploymentIcon/DeploymentIcon.module.scss.js +3 -2
- package/components/EntityHeader/EntityHeader.js +1 -1
- package/components/InitialsAvatar/InitialsAvatar.d.ts +3 -0
- package/components/InitialsAvatar/InitialsAvatar.d.ts.map +1 -1
- package/components/InitialsAvatar/InitialsAvatar.js +4 -3
- package/components/ItemHeader/ItemHeader.d.ts +5 -1
- package/components/ItemHeader/ItemHeader.d.ts.map +1 -1
- package/components/ItemHeader/ItemHeader.js +4 -1
- package/components/ItemHeader/ItemHeader.module.scss.js +5 -4
- package/components/MarkdownRenderer/CodeBlock/CodeBlock.d.ts +6 -2
- package/components/MarkdownRenderer/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/components/MarkdownRenderer/CodeBlock/CodeBlock.js +58 -58
- package/components/MarkdownRenderer/CodeBlock/CodeBlock.module.scss.js +9 -8
- package/components/MarkdownRenderer/CodeBlock/syntax-theme.d.ts.map +1 -1
- package/components/MarkdownRenderer/MDMessageViewer.d.ts +6 -2
- package/components/MarkdownRenderer/MDMessageViewer.d.ts.map +1 -1
- package/components/MarkdownRenderer/MDMessageViewer.js +14 -12
- package/components/MarkdownRenderer/MarkdownRenderer.d.ts +8 -0
- package/components/MarkdownRenderer/MarkdownRenderer.d.ts.map +1 -1
- package/components/MarkdownRenderer/MarkdownRenderer.js +146 -136
- package/components/MarkdownRenderer/MarkdownRenderer.module.scss.js +9 -8
- package/components/MarkdownRenderer/Math/MarkdownMathBlock.js +1 -1
- package/components/MarkdownRenderer/Math/MarkdownMathBlock.module.scss.js +5 -4
- package/components/MarkdownRenderer/PlainTextRenderer.js +1 -1
- package/components/MarkdownRenderer/Table/MarkdownTable.d.ts +4 -0
- package/components/MarkdownRenderer/Table/MarkdownTable.d.ts.map +1 -1
- package/components/MarkdownRenderer/Table/MarkdownTable.js +68 -63
- package/components/MarkdownRenderer/Table/MarkdownTable.module.scss.js +15 -13
- package/components/MarkdownRenderer/Table/TableHeader.module.scss.js +3 -2
- package/components/MarkdownRenderer/markdown-whitespace.js +2 -6
- package/components/NewVersionAlert/NewVersionAlert.d.ts +27 -0
- package/components/NewVersionAlert/NewVersionAlert.d.ts.map +1 -0
- package/components/NewVersionAlert/NewVersionAlert.js +28 -0
- package/components/NewVersionAlert/NewVersionAlert.module.scss.js +4 -0
- package/components/NotificationStack/NotificationStack.d.ts +48 -0
- package/components/NotificationStack/NotificationStack.d.ts.map +1 -0
- package/components/NotificationStack/NotificationStack.js +111 -0
- package/components/PanelEmptyState/PanelEmptyState.d.ts +12 -2
- package/components/PanelEmptyState/PanelEmptyState.d.ts.map +1 -1
- package/components/PanelEmptyState/PanelEmptyState.js +19 -9
- package/components/PanelEmptyState/PanelEmptyState.module.scss.js +6 -2
- package/components/ResourceSummary/ResourceSummary.module.scss.js +5 -4
- package/components/TextRefinementField/TextRefinementField.d.ts +4 -2
- package/components/TextRefinementField/TextRefinementField.d.ts.map +1 -1
- package/components/TextRefinementField/TextRefinementField.js +84 -55
- package/components/UnsavedChangesProvider/UnsavedChangesProvider.d.ts +22 -0
- package/components/UnsavedChangesProvider/UnsavedChangesProvider.d.ts.map +1 -0
- package/components/UnsavedChangesProvider/UnsavedChangesProvider.js +57 -0
- package/components/UnsavedChangesProvider/unsaved-changes-context.d.ts +44 -0
- package/components/UnsavedChangesProvider/unsaved-changes-context.d.ts.map +1 -0
- package/components/UnsavedChangesProvider/unsaved-changes-context.js +13 -0
- package/constants/breakpoint.d.ts +6 -0
- package/constants/breakpoint.d.ts.map +1 -1
- package/constants/breakpoint.js +2 -2
- package/conversation-transfer/conversation-transfer-queue.d.ts +16 -0
- package/conversation-transfer/conversation-transfer-queue.d.ts.map +1 -0
- package/conversation-transfer/conversation-transfer-queue.js +24 -0
- package/entry-points/markdown.d.ts +1 -0
- package/entry-points/markdown.d.ts.map +1 -1
- package/file-manager/DialFileManagerShell/DialFileManagerShell.d.ts +15 -0
- package/file-manager/DialFileManagerShell/DialFileManagerShell.d.ts.map +1 -1
- package/file-manager/DialFileManagerShell/DialFileManagerShell.js +330 -266
- package/file-manager/DialFileManagerShell/DialFileManagerShell.module.scss.js +8 -0
- package/file-manager/FileManagerAttachModal/FileManagerAttachModal.d.ts +7 -0
- package/file-manager/FileManagerAttachModal/FileManagerAttachModal.d.ts.map +1 -1
- package/file-manager/FileManagerAttachModal/FileManagerAttachModal.js +85 -80
- package/file-manager/FileManagerAttachModal/FileManagerAttachModal.module.scss.js +7 -0
- package/file-manager/OperationLoaderModal/OperationLoaderModal.d.ts +5 -0
- package/file-manager/OperationLoaderModal/OperationLoaderModal.d.ts.map +1 -1
- package/file-manager/OperationLoaderModal/OperationLoaderModal.js +25 -20
- package/file-manager/OperationLoaderModal/OperationLoaderModal.module.scss.js +4 -0
- package/file-manager/file-manager-controller.d.ts +11 -3
- package/file-manager/file-manager-controller.d.ts.map +1 -1
- package/file-manager/index.d.ts +1 -0
- package/file-manager/index.d.ts.map +1 -1
- package/file-manager/labels.d.ts +23 -2
- package/file-manager/labels.d.ts.map +1 -1
- package/file-manager/shell-styles.d.ts +37 -0
- package/file-manager/shell-styles.d.ts.map +1 -0
- package/file-manager/upload-batch.d.ts +46 -0
- package/file-manager/upload-batch.d.ts.map +1 -1
- package/file-manager/upload-batch.js +6 -2
- package/file-manager/upload-queue.d.ts +44 -4
- package/file-manager/upload-queue.d.ts.map +1 -1
- package/file-manager/upload-queue.js +45 -13
- package/file-manager.js +4 -4
- package/hooks/useAvailableHeightCap.js +1 -1
- package/hooks/useControlErrorAssociation.d.ts +3 -0
- package/hooks/useControlErrorAssociation.d.ts.map +1 -0
- package/hooks/useControlErrorAssociation.js +12 -0
- package/hooks/useIsMobile.js +1 -1
- package/hooks/useIsPhone.d.ts +3 -0
- package/hooks/useIsPhone.d.ts.map +1 -0
- package/hooks/useIsPhone.js +13 -0
- package/hooks/useIsTablet.d.ts +3 -0
- package/hooks/useIsTablet.d.ts.map +1 -0
- package/hooks/useIsTablet.js +13 -0
- package/hooks/useIsTextClipped.d.ts +26 -0
- package/hooks/useIsTextClipped.d.ts.map +1 -0
- package/hooks/useIsTextClipped.js +25 -0
- package/hooks/useIsVerticallyClamped.d.ts +16 -0
- package/hooks/useIsVerticallyClamped.d.ts.map +1 -0
- package/hooks/useIsVerticallyClamped.js +20 -0
- package/hooks/useTextRefinement.d.ts +1 -1
- package/hooks/useTextRefinement.d.ts.map +1 -1
- package/hooks/useTextRefinement.js +4 -4
- package/hooks/useUnsavedChangesGuard.js +1 -5
- package/hooks/useUnsavedChangesLeaveConfirmation.d.ts +12 -0
- package/hooks/useUnsavedChangesLeaveConfirmation.d.ts.map +1 -0
- package/hooks/useUnsavedChangesLeaveConfirmation.js +22 -0
- package/hooks/useUnsavedChangesLeaveGuard.d.ts +24 -0
- package/hooks/useUnsavedChangesLeaveGuard.d.ts.map +1 -0
- package/hooks/useUnsavedChangesLeaveGuard.js +24 -0
- package/index.css +3 -2
- package/index.d.ts +17 -0
- package/index.d.ts.map +1 -1
- package/index.js +93 -76
- package/markdown.js +3 -2
- package/models/auth.d.ts +2 -0
- package/models/auth.d.ts.map +1 -1
- package/models/chat.d.ts +2 -0
- package/models/chat.d.ts.map +1 -1
- package/models/conversation-classification.d.ts +5 -0
- package/models/conversation-classification.d.ts.map +1 -1
- package/models/conversation-classification.js +3 -1
- package/models/inline-segment.d.ts +11 -0
- package/models/inline-segment.d.ts.map +1 -0
- package/models/text-refinement.d.ts +6 -2
- package/models/text-refinement.d.ts.map +1 -1
- package/package.json +10 -17
- package/utils/base64-json.d.ts +14 -0
- package/utils/base64-json.d.ts.map +1 -0
- package/utils/base64-json.js +4 -0
- package/utils/dom.d.ts +8 -0
- package/utils/dom.d.ts.map +1 -0
- package/utils/dom.js +10 -0
- package/utils/format-price.js +10 -10
- package/utils/inline-segments.d.ts +38 -0
- package/utils/inline-segments.d.ts.map +1 -0
- package/utils/inline-segments.js +53 -0
- package/utils/latex.d.ts +4 -3
- package/utils/latex.d.ts.map +1 -1
- package/utils/latex.js +47 -41
- package/utils/markdown-html.d.ts +14 -0
- package/utils/markdown-html.d.ts.map +1 -0
- package/utils/markdown-html.js +11 -0
- package/utils/message-attachment-to-display.js +1 -1
- package/utils/mime-type.js +1 -1
- package/utils/prompt-variables.js +5 -9
- package/utils/syntax-highlighting.js +8 -8
|
@@ -1,86 +1,115 @@
|
|
|
1
1
|
import { mergeClasses as e } from "../../utils/merge-class.js";
|
|
2
2
|
import { TextRefinementState as t } from "../../hooks/useTextRefinement.js";
|
|
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,
|
|
4
|
-
import { useRef as
|
|
5
|
-
import { Fragment as
|
|
6
|
-
import { IconSparkles as
|
|
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, LiveRegionPoliteness as l, Spinner as u } from "@epam/ai-dial-ui-kit";
|
|
4
|
+
import { useLayoutEffect as d, useRef as f } from "react";
|
|
5
|
+
import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
6
|
+
import { IconRestore as g, IconSparkles as _ } from "@tabler/icons-react";
|
|
7
7
|
//#region src/components/TextRefinementField/TextRefinementField.tsx
|
|
8
|
-
var
|
|
9
|
-
let
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
var v = ({ isEnabled: v, fieldId: y, label: b, labelClassName: x, required: S, labels: C, refinement: w, disabled: T, feedbackClassName: E, errorClassName: D, caption: O, children: k }) => {
|
|
9
|
+
let A = f(null), j = f(null), M = v && w.isPending;
|
|
10
|
+
d(() => {
|
|
11
|
+
if (!M) return;
|
|
12
|
+
let e = Array.from(j.current?.querySelectorAll("input, textarea") ?? []).find((e) => e.id === y);
|
|
13
|
+
if (!e) return;
|
|
14
|
+
let t = e.readOnly;
|
|
15
|
+
return e.readOnly = !0, () => {
|
|
16
|
+
e.readOnly = t;
|
|
17
|
+
};
|
|
18
|
+
}, [M, y]);
|
|
19
|
+
let N = O && /* @__PURE__ */ m(n, {
|
|
20
|
+
text: O,
|
|
21
|
+
className: "ms-auto shrink-0 text-end"
|
|
22
|
+
});
|
|
23
|
+
if (!v) return N ? /* @__PURE__ */ h("div", {
|
|
24
|
+
className: "flex min-w-0 flex-col gap-1",
|
|
25
|
+
children: [k, N]
|
|
26
|
+
}) : /* @__PURE__ */ m(p, { children: k });
|
|
27
|
+
let P = w.state === t.Error, F = w.canUndo, I = C?.refineWithAiLabel ?? "Refine with AI";
|
|
28
|
+
M ? I = C?.refineRefiningLabel ?? "Refining" : F && (I = C?.refineRegenerateLabel ?? "Regenerate");
|
|
29
|
+
let L = w.state === t.Pending || w.state === t.Success || w.state === t.Restored, R = {
|
|
12
30
|
[t.Idle]: "",
|
|
13
|
-
[t.Pending]:
|
|
14
|
-
[t.Success]:
|
|
15
|
-
[t.Restored]:
|
|
16
|
-
[t.Unchanged]:
|
|
31
|
+
[t.Pending]: C?.refinePendingAriaLabel ?? "Refining text",
|
|
32
|
+
[t.Success]: C?.refineSuccessAriaLabel ?? "Text refined",
|
|
33
|
+
[t.Restored]: C?.refineUndoAriaLabel ?? "Original text restored.",
|
|
34
|
+
[t.Unchanged]: C?.refineUnchangedAriaLabel ?? "No changes were needed.",
|
|
17
35
|
[t.Error]: ""
|
|
18
|
-
}[
|
|
19
|
-
return /* @__PURE__ */
|
|
36
|
+
}[w.state];
|
|
37
|
+
return /* @__PURE__ */ h("div", {
|
|
20
38
|
className: "flex min-w-0 flex-col gap-1",
|
|
21
39
|
role: "group",
|
|
22
|
-
"aria-labelledby":
|
|
23
|
-
"aria-describedby":
|
|
40
|
+
"aria-labelledby": y + "-label",
|
|
41
|
+
"aria-describedby": P ? y + "-refinement-error" : void 0,
|
|
24
42
|
children: [
|
|
25
|
-
/* @__PURE__ */
|
|
43
|
+
/* @__PURE__ */ h("div", {
|
|
26
44
|
className: "flex min-w-0 flex-wrap items-center gap-x-3",
|
|
27
|
-
children: [/* @__PURE__ */
|
|
28
|
-
id:
|
|
29
|
-
htmlFor:
|
|
30
|
-
className:
|
|
31
|
-
label:
|
|
32
|
-
required:
|
|
33
|
-
}), /* @__PURE__ */
|
|
34
|
-
ref:
|
|
45
|
+
children: [/* @__PURE__ */ m(c, {
|
|
46
|
+
id: y + "-label",
|
|
47
|
+
htmlFor: y,
|
|
48
|
+
className: x,
|
|
49
|
+
label: b,
|
|
50
|
+
required: S
|
|
51
|
+
}), /* @__PURE__ */ h("div", {
|
|
52
|
+
ref: A,
|
|
35
53
|
className: "ms-auto flex min-w-0 flex-wrap items-center",
|
|
36
|
-
children: [/* @__PURE__ */
|
|
54
|
+
children: [F && !M && /* @__PURE__ */ m(s, {
|
|
37
55
|
size: a.Small,
|
|
38
|
-
label:
|
|
39
|
-
disabled:
|
|
56
|
+
label: C?.refineUndoLabel ?? "Restore original",
|
|
57
|
+
disabled: T,
|
|
40
58
|
onClick: () => {
|
|
41
|
-
|
|
59
|
+
w.undo();
|
|
60
|
+
let e = A.current?.querySelectorAll("button");
|
|
61
|
+
e?.[e.length - 1]?.focus();
|
|
42
62
|
},
|
|
43
|
-
iconBefore:
|
|
63
|
+
iconBefore: /* @__PURE__ */ m(g, {
|
|
64
|
+
size: r.SM,
|
|
65
|
+
stroke: i,
|
|
66
|
+
"aria-hidden": !0
|
|
67
|
+
})
|
|
68
|
+
}), /* @__PURE__ */ m(s, {
|
|
69
|
+
size: a.Small,
|
|
70
|
+
label: I,
|
|
71
|
+
disabled: T || !w.canRefine,
|
|
72
|
+
onClick: () => {
|
|
73
|
+
w.refine();
|
|
74
|
+
},
|
|
75
|
+
iconBefore: M ? /* @__PURE__ */ m("span", {
|
|
44
76
|
"aria-hidden": !0,
|
|
45
|
-
children: /* @__PURE__ */
|
|
77
|
+
children: /* @__PURE__ */ m(u, {
|
|
46
78
|
size: r.SM,
|
|
47
79
|
ariaLabel: ""
|
|
48
80
|
})
|
|
49
|
-
}) : /* @__PURE__ */
|
|
81
|
+
}) : /* @__PURE__ */ m(_, {
|
|
50
82
|
size: r.SM,
|
|
51
83
|
stroke: i,
|
|
52
84
|
"aria-hidden": !0
|
|
53
85
|
})
|
|
54
|
-
}), x.canUndo && /* @__PURE__ */ f(s, {
|
|
55
|
-
size: a.Small,
|
|
56
|
-
label: b?.refineUndoLabel ?? "Undo",
|
|
57
|
-
disabled: S,
|
|
58
|
-
onClick: () => {
|
|
59
|
-
x.undo(), E.current?.querySelector("button")?.focus();
|
|
60
|
-
}
|
|
61
86
|
})]
|
|
62
87
|
})]
|
|
63
88
|
}),
|
|
64
|
-
/* @__PURE__ */
|
|
65
|
-
|
|
66
|
-
|
|
89
|
+
/* @__PURE__ */ m("div", {
|
|
90
|
+
ref: j,
|
|
91
|
+
"aria-busy": w.isPending,
|
|
92
|
+
children: k
|
|
67
93
|
}),
|
|
68
|
-
/* @__PURE__ */
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
94
|
+
/* @__PURE__ */ h("div", {
|
|
95
|
+
className: "flex min-w-0 items-start gap-3",
|
|
96
|
+
children: [/* @__PURE__ */ m("div", {
|
|
97
|
+
className: "min-w-0 flex-1",
|
|
98
|
+
children: /* @__PURE__ */ m(n, {
|
|
99
|
+
text: R,
|
|
100
|
+
announce: l.Polite,
|
|
101
|
+
className: e(E, L && "sr-only")
|
|
102
|
+
})
|
|
103
|
+
}), N]
|
|
75
104
|
}),
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
className: e(
|
|
80
|
-
text:
|
|
105
|
+
/* @__PURE__ */ m(o, {
|
|
106
|
+
id: y + "-refinement-error",
|
|
107
|
+
announce: l.Assertive,
|
|
108
|
+
className: e(E, D),
|
|
109
|
+
text: P ? C?.refineErrorLabel ?? "Could not refine this text. Please try again." : ""
|
|
81
110
|
})
|
|
82
111
|
]
|
|
83
112
|
});
|
|
84
113
|
};
|
|
85
114
|
//#endregion
|
|
86
|
-
export {
|
|
115
|
+
export { v as TextRefinementField };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
/** User-visible strings of the unsaved-changes dialog. */
|
|
3
|
+
export interface UnsavedChangesLabels {
|
|
4
|
+
/** Dialog title, which also names the dialog. Defaults to `'Discard unsaved changes?'`. */
|
|
5
|
+
title?: string;
|
|
6
|
+
/** Dialog message. Defaults to `'You have unsaved changes. Leaving now will discard them.'`. */
|
|
7
|
+
message?: string;
|
|
8
|
+
/** Label of the discarding action. Defaults to `'Discard changes'`. */
|
|
9
|
+
confirmLabel?: string;
|
|
10
|
+
/** Label of the action that keeps the edits. Defaults to `'Keep editing'`. */
|
|
11
|
+
cancelLabel?: string;
|
|
12
|
+
}
|
|
13
|
+
/** Props for `UnsavedChangesProvider`. */
|
|
14
|
+
export interface UnsavedChangesProviderProps {
|
|
15
|
+
/** Subtree whose forms and exits share the dialog. */
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
/** User-visible strings of the dialog; each missing field keeps its English default. */
|
|
18
|
+
labels?: UnsavedChangesLabels;
|
|
19
|
+
}
|
|
20
|
+
/** Owns the single "Discard unsaved changes?" dialog and the dirty state of the one guarded form mounted below it. */
|
|
21
|
+
export declare const UnsavedChangesProvider: FC<UnsavedChangesProviderProps>;
|
|
22
|
+
//# sourceMappingURL=UnsavedChangesProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnsavedChangesProvider.d.ts","sourceRoot":"","sources":["../../../src/components/UnsavedChangesProvider/UnsavedChangesProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,EAAE,EACP,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAQf,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AASD,0CAA0C;AAC1C,MAAM,WAAW,2BAA2B;IAC1C,sDAAsD;IACtD,QAAQ,EAAE,SAAS,CAAC;IACpB,wFAAwF;IACxF,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED,sHAAsH;AACtH,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAiFlE,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ConfirmationDialog as e } from "../ConfirmationDialog/ConfirmationDialog.js";
|
|
2
|
+
import { UnsavedChangesContext as t, UnsavedChangesInternalContext as n } from "./unsaved-changes-context.js";
|
|
3
|
+
import { ConfirmationPopupVariant as r } from "@epam/ai-dial-ui-kit";
|
|
4
|
+
import { useCallback as i, useEffect as a, useMemo as o, useRef as s, useState as c } from "react";
|
|
5
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/UnsavedChangesProvider/UnsavedChangesProvider.tsx
|
|
7
|
+
var d = {
|
|
8
|
+
title: "Discard unsaved changes?",
|
|
9
|
+
message: "You have unsaved changes. Leaving now will discard them.",
|
|
10
|
+
confirmLabel: "Discard changes",
|
|
11
|
+
cancelLabel: "Keep editing"
|
|
12
|
+
}, f = ({ children: f, labels: p }) => {
|
|
13
|
+
let [m, h] = c(!1), [g, _] = c(null), v = s(!1), y = {
|
|
14
|
+
title: p?.title ?? d.title,
|
|
15
|
+
message: p?.message ?? d.message,
|
|
16
|
+
confirmLabel: p?.confirmLabel ?? d.confirmLabel,
|
|
17
|
+
cancelLabel: p?.cancelLabel ?? d.cancelLabel
|
|
18
|
+
};
|
|
19
|
+
a(() => () => {
|
|
20
|
+
v.current = !1;
|
|
21
|
+
}, []);
|
|
22
|
+
let b = i((e) => (h(e), () => h(!1)), []), x = i((e) => (v.current = !1, _(e), () => _((t) => t === e ? null : t)), []), S = i((e) => {
|
|
23
|
+
x({
|
|
24
|
+
onDiscard: e,
|
|
25
|
+
shouldAllowUnload: !0
|
|
26
|
+
});
|
|
27
|
+
}, [x]), C = () => {
|
|
28
|
+
g && (_(null), g.shouldAllowUnload && (v.current = !0), g.onDiscard());
|
|
29
|
+
}, w = () => {
|
|
30
|
+
g && (_(null), g.onKeep?.());
|
|
31
|
+
}, T = o(() => ({
|
|
32
|
+
hasUnsavedChanges: m,
|
|
33
|
+
requestDiscard: S
|
|
34
|
+
}), [m, S]), E = o(() => ({
|
|
35
|
+
register: b,
|
|
36
|
+
open: x,
|
|
37
|
+
unloadAllowedRef: v
|
|
38
|
+
}), [b, x]);
|
|
39
|
+
return /* @__PURE__ */ l(n.Provider, {
|
|
40
|
+
value: E,
|
|
41
|
+
children: /* @__PURE__ */ u(t.Provider, {
|
|
42
|
+
value: T,
|
|
43
|
+
children: [f, /* @__PURE__ */ l(e, {
|
|
44
|
+
open: g != null,
|
|
45
|
+
title: y.title,
|
|
46
|
+
message: y.message,
|
|
47
|
+
confirmLabel: y.confirmLabel,
|
|
48
|
+
cancelLabel: y.cancelLabel,
|
|
49
|
+
variant: r.Danger,
|
|
50
|
+
onConfirm: C,
|
|
51
|
+
onClose: w
|
|
52
|
+
})]
|
|
53
|
+
})
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
//#endregion
|
|
57
|
+
export { f as UnsavedChangesProvider };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
/** Value of {@link useUnsavedChanges}. */
|
|
3
|
+
export interface UnsavedChangesContextValue {
|
|
4
|
+
/** Whether the guarded form reports unsaved changes. `false` when no form is registered. */
|
|
5
|
+
hasUnsavedChanges: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Opens the unsaved-changes dialog. **Discard changes** allows the next page
|
|
8
|
+
* unload, closes the dialog and runs `onDiscard`; **Keep editing** or any
|
|
9
|
+
* dismissal closes it and runs nothing. Used by exits that are not router
|
|
10
|
+
* transitions, such as Log out.
|
|
11
|
+
*/
|
|
12
|
+
requestDiscard: (onDiscard: () => void) => void;
|
|
13
|
+
}
|
|
14
|
+
/** Actions run by the dialog's two outcomes. */
|
|
15
|
+
export interface PendingDiscard {
|
|
16
|
+
/** Runs when the user chooses Discard changes. */
|
|
17
|
+
onDiscard: () => void;
|
|
18
|
+
/** Runs when the user chooses Keep editing or dismisses the dialog. */
|
|
19
|
+
onKeep?: () => void;
|
|
20
|
+
/** Whether confirming lets the next `beforeunload` pass without the native prompt. Defaults to `false`. */
|
|
21
|
+
shouldAllowUnload?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** Registration and dialog plumbing shared by the provider and the leave-guard hooks. */
|
|
24
|
+
export interface UnsavedChangesInternalContextValue {
|
|
25
|
+
/** Registers the guarded form's dirty state; the returned callback unregisters it. */
|
|
26
|
+
register: (isDirty: boolean) => () => void;
|
|
27
|
+
/**
|
|
28
|
+
* Opens the dialog wired to the given outcomes. The returned callback closes
|
|
29
|
+
* it without running either outcome, and does nothing once the dialog has
|
|
30
|
+
* been answered or another request has replaced it.
|
|
31
|
+
*/
|
|
32
|
+
open: (pending: PendingDiscard) => () => void;
|
|
33
|
+
/** Set once a discard has allowed the page to unload; the `beforeunload` listener skips its prompt while it is `true`. */
|
|
34
|
+
unloadAllowedRef: RefObject<boolean>;
|
|
35
|
+
}
|
|
36
|
+
/** Public unsaved-changes state, read through `useUnsavedChanges`. */
|
|
37
|
+
export declare const UnsavedChangesContext: import('react').Context<UnsavedChangesContextValue | undefined>;
|
|
38
|
+
/** Registration and dialog plumbing, read through `useUnsavedChangesInternal`. */
|
|
39
|
+
export declare const UnsavedChangesInternalContext: import('react').Context<UnsavedChangesInternalContextValue | undefined>;
|
|
40
|
+
/** Returns the guarded form's dirty state and the dialog entry point for exits that are not router transitions; throws outside `UnsavedChangesProvider`. */
|
|
41
|
+
export declare const useUnsavedChanges: () => UnsavedChangesContextValue;
|
|
42
|
+
/** Returns the registration and dialog plumbing for the leave-guard hooks; throws outside `UnsavedChangesProvider`. Not re-exported from the package. */
|
|
43
|
+
export declare const useUnsavedChangesInternal: () => UnsavedChangesInternalContextValue;
|
|
44
|
+
//# sourceMappingURL=unsaved-changes-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unsaved-changes-context.d.ts","sourceRoot":"","sources":["../../../src/components/UnsavedChangesProvider/unsaved-changes-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElE,0CAA0C;AAC1C,MAAM,WAAW,0BAA0B;IACzC,4FAA4F;IAC5F,iBAAiB,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACjD;AAED,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,2GAA2G;IAC3G,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,yFAAyF;AACzF,MAAM,WAAW,kCAAkC;IACjD,sFAAsF;IACtF,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC;IAC3C;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,MAAM,IAAI,CAAC;IAC9C,0HAA0H;IAC1H,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CACtC;AAED,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,iEAEtB,CAAC;AAEb,kFAAkF;AAClF,eAAO,MAAM,6BAA6B,yEAE9B,CAAC;AAEb,4JAA4J;AAC5J,eAAO,MAAM,iBAAiB,QAAO,0BAQpC,CAAC;AAEF,yJAAyJ;AACzJ,eAAO,MAAM,yBAAyB,QAChC,kCAQH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createContext as e, useContext as t } from "react";
|
|
2
|
+
//#region src/components/UnsavedChangesProvider/unsaved-changes-context.ts
|
|
3
|
+
var n = e(void 0), r = e(void 0), i = () => {
|
|
4
|
+
let e = t(n);
|
|
5
|
+
if (!e) throw Error("useUnsavedChanges must be used within an UnsavedChangesProvider");
|
|
6
|
+
return e;
|
|
7
|
+
}, a = () => {
|
|
8
|
+
let e = t(r);
|
|
9
|
+
if (!e) throw Error("The unsaved-changes leave guard must be used within an UnsavedChangesProvider");
|
|
10
|
+
return e;
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { n as UnsavedChangesContext, r as UnsavedChangesInternalContext, i as useUnsavedChanges, a as useUnsavedChangesInternal };
|
|
@@ -6,4 +6,10 @@ export declare const MOBILE_MAX_WIDTH_PX: number;
|
|
|
6
6
|
export declare const DESKTOP_MEDIA_QUERY = "(min-width: 1280px)";
|
|
7
7
|
/** `matchMedia` query matching the mobile/tablet band (up to 1279px). */
|
|
8
8
|
export declare const MOBILE_MEDIA_QUERY = "(max-width: 1279px)";
|
|
9
|
+
/** Inclusive boundary for anchored menus and bounded tablet panels, independent of layout. */
|
|
10
|
+
export declare const TABLET_BREAKPOINT_PX = 768;
|
|
11
|
+
/** Phone menu presentation, including fractional widths below 768px. */
|
|
12
|
+
export declare const PHONE_MEDIA_QUERY = "(width < 768px)";
|
|
13
|
+
/** Bounded overlays without changing the app's mobile layout policy. */
|
|
14
|
+
export declare const TABLET_MEDIA_QUERY = "(768px <= width < 1280px)";
|
|
9
15
|
//# sourceMappingURL=breakpoint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breakpoint.d.ts","sourceRoot":"","sources":["../../src/constants/breakpoint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"breakpoint.d.ts","sourceRoot":"","sources":["../../src/constants/breakpoint.ts"],"names":[],"mappings":"AAKA,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,oFAAoF;AACpF,eAAO,MAAM,mBAAmB,QAA4B,CAAC;AAE7D,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,wBAA4C,CAAC;AAE7E,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,wBAA0C,CAAC;AAE1E,8FAA8F;AAC9F,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,oBAAwC,CAAC;AAEvE,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,8BAAsE,CAAC"}
|
package/constants/breakpoint.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/constants/breakpoint.ts
|
|
2
|
-
var e = 1280, t =
|
|
2
|
+
var e = 1280, t = 1279, n = `(min-width: ${e}px)`, r = `(max-width: ${t}px)`, i = 768, a = "(width < 768px)", o = `(768px <= width < ${e}px)`;
|
|
3
3
|
//#endregion
|
|
4
|
-
export { e as DESKTOP_BREAKPOINT_PX, n as DESKTOP_MEDIA_QUERY, t as MOBILE_MAX_WIDTH_PX, r as MOBILE_MEDIA_QUERY };
|
|
4
|
+
export { e as DESKTOP_BREAKPOINT_PX, n as DESKTOP_MEDIA_QUERY, t as MOBILE_MAX_WIDTH_PX, r as MOBILE_MEDIA_QUERY, a as PHONE_MEDIA_QUERY, i as TABLET_BREAKPOINT_PX, o as TABLET_MEDIA_QUERY };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TransferQueueItem } from '@epam/ai-dial-ui-kit';
|
|
2
|
+
import { ConversationTransferErrorCode, ConversationTransferJob, ConversationTransferWarningCode } from '../models/conversation-transfer';
|
|
3
|
+
/** Resolves the translated reason shown on a failed or warned queue row. */
|
|
4
|
+
export interface TransferQueueMessageResolvers {
|
|
5
|
+
/** Resolves a failure code, including an absent code. */
|
|
6
|
+
getErrorMessage: (code: ConversationTransferErrorCode | undefined) => string;
|
|
7
|
+
/** Resolves a warning code and optional affected names. */
|
|
8
|
+
getWarningMessage: (code: ConversationTransferWarningCode | undefined, names?: string[]) => string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Maps export/import jobs onto the UI kit's `TransferQueue` rows. A row is
|
|
12
|
+
* identified by its file name; the failure or warning reason is resolved here
|
|
13
|
+
* because the kit knows nothing about transfer error codes.
|
|
14
|
+
*/
|
|
15
|
+
export declare const toConversationTransferQueueItems: (jobs: readonly ConversationTransferJob[], { getErrorMessage, getWarningMessage }: TransferQueueMessageResolvers) => TransferQueueItem[];
|
|
16
|
+
//# sourceMappingURL=conversation-transfer-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-transfer-queue.d.ts","sourceRoot":"","sources":["../../src/conversation-transfer/conversation-transfer-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,6BAA6B,EAC7B,KAAK,uBAAuB,EAE5B,KAAK,+BAA+B,EACrC,MAAM,iCAAiC,CAAC;AAEzC,4EAA4E;AAC5E,MAAM,WAAW,6BAA6B;IAC5C,yDAAyD;IACzD,eAAe,EAAE,CAAC,IAAI,EAAE,6BAA6B,GAAG,SAAS,KAAK,MAAM,CAAC;IAC7E,2DAA2D;IAC3D,iBAAiB,EAAE,CACjB,IAAI,EAAE,+BAA+B,GAAG,SAAS,EACjD,KAAK,CAAC,EAAE,MAAM,EAAE,KACb,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GAC3C,MAAM,SAAS,uBAAuB,EAAE,EACxC,wCAAwC,6BAA6B,KACpE,iBAAiB,EA6BnB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ConversationTransferJobStatus as e } from "../models/conversation-transfer.js";
|
|
2
|
+
import { TransferQueueItemStatus as t } from "@epam/ai-dial-ui-kit";
|
|
3
|
+
//#region src/conversation-transfer/conversation-transfer-queue.ts
|
|
4
|
+
var n = (n, { getErrorMessage: r, getWarningMessage: i }) => {
|
|
5
|
+
let a = {
|
|
6
|
+
[e.InProgress]: t.InProgress,
|
|
7
|
+
[e.Success]: t.Success,
|
|
8
|
+
[e.Warning]: t.Warning,
|
|
9
|
+
[e.Failed]: t.Failed,
|
|
10
|
+
[e.Canceled]: t.Canceled
|
|
11
|
+
};
|
|
12
|
+
return n.map((t) => {
|
|
13
|
+
let n;
|
|
14
|
+
return t.status === e.Failed ? n = r(t.errorCode) : t.status === e.Warning && (n = i(t.warningCode, t.warningNames)), {
|
|
15
|
+
id: t.id,
|
|
16
|
+
name: t.fileName,
|
|
17
|
+
status: a[t.status],
|
|
18
|
+
percent: t.progress.percent,
|
|
19
|
+
message: n
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
24
|
+
export { n as toConversationTransferQueueItems };
|
|
@@ -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"}
|
|
@@ -4,6 +4,7 @@ import { FileManagerSelectableNode } from '../../types/file-manager-node';
|
|
|
4
4
|
import { FileManagerController } from '../file-manager-controller';
|
|
5
5
|
import { DialFileManagerActionProfile, DialFileManagerVariant } from '../file-manager-variant';
|
|
6
6
|
import { DialFileManagerShellLabels } from '../labels';
|
|
7
|
+
import { DialFileManagerShellStyles } from '../shell-styles';
|
|
7
8
|
/** Props for the shared file-manager shell component. */
|
|
8
9
|
export interface DialFileManagerShellProps {
|
|
9
10
|
/** Structural view contract containing all controller state and callbacks. */
|
|
@@ -40,6 +41,20 @@ export interface DialFileManagerShellProps {
|
|
|
40
41
|
getDisabledTooltip?: (row: FileManagerGridRow) => string | undefined;
|
|
41
42
|
/** Tooltip shown on files with an unsupported type. */
|
|
42
43
|
unsupportedFileTypeTooltip?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Classes for the folders-tree panel. Replaces the panel's default classes
|
|
46
|
+
* (including its width), so include `shrink-0` and an explicit width.
|
|
47
|
+
* Omit to keep the variant's default.
|
|
48
|
+
*/
|
|
49
|
+
treeContainerClassName?: string;
|
|
50
|
+
/** Called with the virtual path of the file the user chose to preview. */
|
|
51
|
+
onPreview?: (path?: string) => void;
|
|
52
|
+
/** Called with the grid row when the user clicks a file (folders open instead). */
|
|
53
|
+
onTableFileClick?: (row: FileManagerGridRow) => void;
|
|
54
|
+
/** Dotted extensions (e.g. `.md`) the Preview row action is offered for. The file manager matches them exactly as written, so list every spelling that should qualify. */
|
|
55
|
+
previewExtensions?: string[];
|
|
56
|
+
/** Color overrides, e.g. a different surface background. */
|
|
57
|
+
styles?: DialFileManagerShellStyles;
|
|
43
58
|
}
|
|
44
59
|
/**
|
|
45
60
|
* 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;
|
|
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;AAa1C,OAAO,EAML,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAG/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;AAGnB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAgDlE,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;IAChC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACrD,0KAA0K;IAC1K,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,0BAA0B,CAAC;CACrC;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CA0nB9D,CAAC;;AAEF,wBAA0C"}
|