@red-hat-developer-hub/backstage-plugin-intelligent-assistant 5.0.0 → 5.0.2
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/CHANGELOG.md +18 -0
- package/dist/alpha.d.ts +1 -2
- package/dist/components/Attachment.esm.js +14 -14
- package/dist/components/Attachment.esm.js.map +1 -1
- package/dist/components/CollapsedHistoryStrip.esm.js +46 -51
- package/dist/components/CollapsedHistoryStrip.esm.js.map +1 -1
- package/dist/components/DeleteModal.esm.js +1 -0
- package/dist/components/DeleteModal.esm.js.map +1 -1
- package/dist/components/FilePreview.esm.js +3 -2
- package/dist/components/FilePreview.esm.js.map +1 -1
- package/dist/components/LightSpeedChat.esm.js +580 -745
- package/dist/components/LightSpeedChat.esm.js.map +1 -1
- package/dist/components/LightspeedChatBox.esm.js +44 -72
- package/dist/components/LightspeedChatBox.esm.js.map +1 -1
- package/dist/components/LightspeedChatBoxHeader.esm.js +38 -34
- package/dist/components/LightspeedChatBoxHeader.esm.js.map +1 -1
- package/dist/components/LightspeedChatContainer.esm.js +6 -8
- package/dist/components/LightspeedChatContainer.esm.js.map +1 -1
- package/dist/components/LightspeedChatModelsState.esm.js +67 -73
- package/dist/components/LightspeedChatModelsState.esm.js.map +1 -1
- package/dist/components/LightspeedDrawerContext.esm.js.map +1 -1
- package/dist/components/LightspeedDrawerProvider.esm.js +13 -16
- package/dist/components/LightspeedDrawerProvider.esm.js.map +1 -1
- package/dist/components/LightspeedFABContent.esm.js +40 -9
- package/dist/components/LightspeedFABContent.esm.js.map +1 -1
- package/dist/components/LightspeedPage.esm.js +1 -10
- package/dist/components/LightspeedPage.esm.js.map +1 -1
- package/dist/components/McpConfigureServerModal.esm.js +79 -86
- package/dist/components/McpConfigureServerModal.esm.js.map +1 -1
- package/dist/components/McpServersSettings.esm.js +246 -212
- package/dist/components/McpServersSettings.esm.js.map +1 -1
- package/dist/components/MessageBarModelSelector.esm.js +29 -33
- package/dist/components/MessageBarModelSelector.esm.js.map +1 -1
- package/dist/components/PermissionRequiredState.esm.js +63 -63
- package/dist/components/PermissionRequiredState.esm.js.map +1 -1
- package/dist/components/RagSourceLabel.esm.js +22 -0
- package/dist/components/RagSourceLabel.esm.js.map +1 -0
- package/dist/components/RenameConversationModal.esm.js +38 -31
- package/dist/components/RenameConversationModal.esm.js.map +1 -1
- package/dist/components/Router.esm.js +4 -13
- package/dist/components/Router.esm.js.map +1 -1
- package/dist/components/SourcesChipModal.esm.js +94 -89
- package/dist/components/SourcesChipModal.esm.js.map +1 -1
- package/dist/components/ToastAlertGroup.esm.js +24 -40
- package/dist/components/ToastAlertGroup.esm.js.map +1 -1
- package/dist/components/ToolCallContent.esm.js +8 -11
- package/dist/components/ToolCallContent.esm.js.map +1 -1
- package/dist/components/notebooks/AddDocumentModal.esm.js +232 -252
- package/dist/components/notebooks/AddDocumentModal.esm.js.map +1 -1
- package/dist/components/notebooks/DeleteDocumentModal.esm.js +35 -77
- package/dist/components/notebooks/DeleteDocumentModal.esm.js.map +1 -1
- package/dist/components/notebooks/DeleteNotebookModal.esm.js +46 -81
- package/dist/components/notebooks/DeleteNotebookModal.esm.js.map +1 -1
- package/dist/components/notebooks/DocumentSidebar.esm.js +172 -196
- package/dist/components/notebooks/DocumentSidebar.esm.js.map +1 -1
- package/dist/components/notebooks/FileListItem.esm.js +69 -57
- package/dist/components/notebooks/FileListItem.esm.js.map +1 -1
- package/dist/components/notebooks/FileTypeIcon.esm.js +17 -27
- package/dist/components/notebooks/FileTypeIcon.esm.js.map +1 -1
- package/dist/components/notebooks/NotebookCard.esm.js +86 -25
- package/dist/components/notebooks/NotebookCard.esm.js.map +1 -1
- package/dist/components/notebooks/NotebookView.esm.js +367 -380
- package/dist/components/notebooks/NotebookView.esm.js.map +1 -1
- package/dist/components/notebooks/NotebooksTab.esm.js +93 -30
- package/dist/components/notebooks/NotebooksTab.esm.js.map +1 -1
- package/dist/components/notebooks/OverwriteConfirmModal.esm.js +142 -184
- package/dist/components/notebooks/OverwriteConfirmModal.esm.js.map +1 -1
- package/dist/components/notebooks/UploadResourceScreen.esm.js +58 -50
- package/dist/components/notebooks/UploadResourceScreen.esm.js.map +1 -1
- package/dist/components/notebooks/notebookDialogStyles.esm.js +33 -37
- package/dist/components/notebooks/notebookDialogStyles.esm.js.map +1 -1
- package/dist/const.esm.js +15 -2
- package/dist/const.esm.js.map +1 -1
- package/dist/hooks/useAutoScroll.esm.js +11 -11
- package/dist/hooks/useAutoScroll.esm.js.map +1 -1
- package/dist/hooks/useBufferedMessages.esm.js +5 -5
- package/dist/hooks/useBufferedMessages.esm.js.map +1 -1
- package/dist/hooks/useFeedbackActions.esm.js.map +1 -1
- package/dist/hooks/useIsMobile.esm.js +3 -3
- package/dist/hooks/useIsMobile.esm.js.map +1 -1
- package/dist/translations/de.esm.js +1 -2
- package/dist/translations/de.esm.js.map +1 -1
- package/dist/translations/es.esm.js +1 -2
- package/dist/translations/es.esm.js.map +1 -1
- package/dist/translations/fr.esm.js +1 -2
- package/dist/translations/fr.esm.js.map +1 -1
- package/dist/translations/it.esm.js +1 -2
- package/dist/translations/it.esm.js.map +1 -1
- package/dist/translations/ja.esm.js +1 -2
- package/dist/translations/ja.esm.js.map +1 -1
- package/dist/translations/ref.esm.js +1 -2
- package/dist/translations/ref.esm.js.map +1 -1
- package/dist/types.esm.js.map +1 -1
- package/dist/utils/fab-anchor-utils.esm.js +41 -0
- package/dist/utils/fab-anchor-utils.esm.js.map +1 -0
- package/dist/utils/lightspeed-chatbox-utils.esm.js +13 -6
- package/dist/utils/lightspeed-chatbox-utils.esm.js.map +1 -1
- package/dist/utils/scoped-dialog-utils.esm.js +6 -3
- package/dist/utils/scoped-dialog-utils.esm.js.map +1 -1
- package/package.json +5 -9
- package/dist/utils/generateClassName.esm.js +0 -12
- package/dist/utils/generateClassName.esm.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @red-hat-developer-hub/backstage-plugin-intelligent-assistant
|
|
2
2
|
|
|
3
|
+
## 5.0.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 249596b: `GET /v1/models` now returns a `supportsVision` flag on each model, so the frontend can gate image attachments directly from the model list without a per-user `POST /v1/validate-model-vision` round-trip. Each LLM's capability is probed once via a lightweight LCS test-inference and memoised in a shared cache keyed by the model identifier: a confirmed `true` for 24h, a `false` only briefly (LCS returns the same 5xx for a genuinely non-vision model and a transient error, so a real model recovers quickly). Non-LLM models (e.g. embeddings) are reported as `supportsVision: false` without a probe, and a single failed probe no longer blocks the whole list.
|
|
8
|
+
- 726c1de: Migrate Material UI v4 usages to MUI v5.
|
|
9
|
+
- 63be96e: Updated dependency `react-router-dom` to `^6.30.6`.
|
|
10
|
+
- @red-hat-developer-hub/backstage-plugin-intelligent-assistant-common@5.0.2
|
|
11
|
+
|
|
12
|
+
## 5.0.1
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 0f8225e: Show the LCORE `source` field as a label on each referenced document card so that RAG sources are distinguishable.
|
|
17
|
+
- fe51be2: Backstage version bump to v1.54.6
|
|
18
|
+
- Updated dependencies [fe51be2]
|
|
19
|
+
- @red-hat-developer-hub/backstage-plugin-intelligent-assistant-common@5.0.1
|
|
20
|
+
|
|
3
21
|
## 5.0.0
|
|
4
22
|
|
|
5
23
|
### Major Changes
|
package/dist/alpha.d.ts
CHANGED
|
@@ -5,8 +5,7 @@ import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api'
|
|
|
5
5
|
* @alpha
|
|
6
6
|
**/
|
|
7
7
|
declare const intelligentAssistantTranslationRef: _backstage_frontend_plugin_api.TranslationRef<"plugin.intelligent-assistant", {
|
|
8
|
-
readonly
|
|
9
|
-
readonly 'disclaimer.withValidation': string;
|
|
8
|
+
readonly disclaimer: string;
|
|
10
9
|
readonly 'prompts.codeReadability.title': string;
|
|
11
10
|
readonly 'prompts.codeReadability.message': string;
|
|
12
11
|
readonly 'prompts.debugging.title': string;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { jsxs,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { styled } from '@mui/material/styles';
|
|
3
|
+
import { ChatbotDisplayMode } from '@patternfly/chatbot';
|
|
4
|
+
import { AttachmentEdit } from '@patternfly/chatbot/dist/dynamic/AttachmentEdit';
|
|
5
|
+
import { PreviewAttachment } from '@patternfly/chatbot/dist/dynamic/PreviewAttachment';
|
|
4
6
|
import { useTranslation } from '../hooks/useTranslation.esm.js';
|
|
5
7
|
import { useFileAttachmentContext } from './AttachmentContext.esm.js';
|
|
6
8
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
9
|
+
const MODAL_FOOTER_CLASS = "ia-attachment-modal-footer";
|
|
10
|
+
const AttachmentScope = styled("div")({
|
|
11
|
+
[`& .${MODAL_FOOTER_CLASS} > button`]: {
|
|
12
|
+
width: "12% !important"
|
|
12
13
|
}
|
|
13
|
-
})
|
|
14
|
+
});
|
|
14
15
|
const Attachment = () => {
|
|
15
16
|
const {
|
|
16
17
|
currentFileContent,
|
|
@@ -18,7 +19,6 @@ const Attachment = () => {
|
|
|
18
19
|
modalState,
|
|
19
20
|
setCurrentFileContent
|
|
20
21
|
} = useFileAttachmentContext();
|
|
21
|
-
const classes = useStyles();
|
|
22
22
|
const { t } = useTranslation();
|
|
23
23
|
if (!currentFileContent) {
|
|
24
24
|
return null;
|
|
@@ -31,7 +31,7 @@ const Attachment = () => {
|
|
|
31
31
|
setIsEditModalOpen,
|
|
32
32
|
setIsPreviewModalOpen
|
|
33
33
|
} = modalState;
|
|
34
|
-
return /* @__PURE__ */ jsxs(
|
|
34
|
+
return /* @__PURE__ */ jsxs(AttachmentScope, { children: [
|
|
35
35
|
/* @__PURE__ */ jsx(
|
|
36
36
|
PreviewAttachment,
|
|
37
37
|
{
|
|
@@ -41,7 +41,7 @@ const Attachment = () => {
|
|
|
41
41
|
secondaryActionButtonText: t("modal.close"),
|
|
42
42
|
primaryActionButtonText: t("modal.edit"),
|
|
43
43
|
title: t("modal.title.preview"),
|
|
44
|
-
modalFooterClassName:
|
|
44
|
+
modalFooterClassName: MODAL_FOOTER_CLASS,
|
|
45
45
|
onEdit: () => {
|
|
46
46
|
setIsPreviewModalOpen(false);
|
|
47
47
|
setIsEditModalOpen(true);
|
|
@@ -64,8 +64,8 @@ const Attachment = () => {
|
|
|
64
64
|
title: t("modal.title.edit"),
|
|
65
65
|
secondaryActionButtonText: t("modal.cancel"),
|
|
66
66
|
primaryActionButtonText: t("modal.save"),
|
|
67
|
-
modalFooterClassName:
|
|
68
|
-
onSave: (
|
|
67
|
+
modalFooterClassName: MODAL_FOOTER_CLASS,
|
|
68
|
+
onSave: (_event, content) => {
|
|
69
69
|
setCurrentFileContent({
|
|
70
70
|
...currentFileContent,
|
|
71
71
|
content
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Attachment.esm.js","sources":["../../src/components/Attachment.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"Attachment.esm.js","sources":["../../src/components/Attachment.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { styled } from '@mui/material/styles';\nimport { ChatbotDisplayMode } from '@patternfly/chatbot';\nimport { AttachmentEdit } from '@patternfly/chatbot/dist/dynamic/AttachmentEdit';\nimport { PreviewAttachment } from '@patternfly/chatbot/dist/dynamic/PreviewAttachment';\n\nimport { useTranslation } from '../hooks/useTranslation';\nimport { useFileAttachmentContext } from './AttachmentContext';\n\nconst MODAL_FOOTER_CLASS = 'ia-attachment-modal-footer';\n\nconst AttachmentScope = styled('div')({\n [`& .${MODAL_FOOTER_CLASS} > button`]: {\n width: '12% !important',\n },\n});\n\nconst Attachment = () => {\n const {\n currentFileContent,\n setFileContents,\n modalState,\n setCurrentFileContent,\n } = useFileAttachmentContext();\n const { t } = useTranslation();\n\n if (!currentFileContent) {\n return null;\n }\n const {\n previewModalKey,\n isPreviewModalOpen,\n isEditModalOpen,\n setPreviewModalKey,\n setIsEditModalOpen,\n setIsPreviewModalOpen,\n } = modalState;\n\n return (\n <AttachmentScope>\n <PreviewAttachment\n key={previewModalKey}\n code={currentFileContent?.content}\n fileName={currentFileContent?.name}\n isModalOpen={isPreviewModalOpen}\n secondaryActionButtonText={t('modal.close')}\n primaryActionButtonText={t('modal.edit')}\n title={t('modal.title.preview')}\n modalFooterClassName={MODAL_FOOTER_CLASS}\n onEdit={() => {\n setIsPreviewModalOpen(false);\n setIsEditModalOpen(true);\n }}\n onDismiss={() => {\n setCurrentFileContent(undefined);\n setIsPreviewModalOpen(false);\n }}\n handleModalToggle={() => setIsPreviewModalOpen(false)}\n displayMode={ChatbotDisplayMode.fullscreen}\n />\n <AttachmentEdit\n key={currentFileContent?.content}\n code={currentFileContent?.content}\n fileName={currentFileContent?.name}\n isModalOpen={isEditModalOpen}\n title={t('modal.title.edit')}\n secondaryActionButtonText={t('modal.cancel')}\n primaryActionButtonText={t('modal.save')}\n modalFooterClassName={MODAL_FOOTER_CLASS}\n onSave={(_event, content) => {\n setCurrentFileContent({\n ...currentFileContent,\n content,\n });\n setFileContents(prev => {\n const existingIndex = prev.findIndex(\n f => f.name === currentFileContent?.name,\n );\n\n if (existingIndex !== -1) {\n // Update the existing file's content\n const updated = [...prev];\n updated[existingIndex] = {\n ...updated[existingIndex],\n content: content as string,\n };\n return updated;\n }\n\n // File doesn't exist, add a new one\n return [\n ...prev,\n {\n name: currentFileContent?.name,\n type: currentFileContent?.type,\n content: content as string,\n },\n ];\n });\n\n setPreviewModalKey(prev => prev + 1);\n setIsEditModalOpen(false);\n setIsPreviewModalOpen(true);\n }}\n onCancel={() => setCurrentFileContent(undefined)}\n handleModalToggle={() => setIsEditModalOpen(false)}\n displayMode={ChatbotDisplayMode.fullscreen}\n />\n </AttachmentScope>\n );\n};\n\nexport default Attachment;\n"],"names":[],"mappings":"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"}
|
|
@@ -1,79 +1,74 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { styled } from '@mui/material/styles';
|
|
3
|
+
import { Button, Tooltip } from '@patternfly/react-core';
|
|
4
4
|
import { PenIcon } from '@patternfly/react-icons';
|
|
5
5
|
import { useTranslation } from '../hooks/useTranslation.esm.js';
|
|
6
6
|
import { SidebarExpandIcon } from './notebooks/SidebarCollapseIcon.esm.js';
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
8
|
+
const Strip = styled("div")(({ theme }) => ({
|
|
9
|
+
display: "flex",
|
|
10
|
+
flexDirection: "column",
|
|
11
|
+
alignItems: "center",
|
|
12
|
+
paddingTop: theme.spacing(1.5),
|
|
13
|
+
gap: theme.spacing(1.5),
|
|
14
|
+
borderRight: "1px solid var(--pf-t--global--border--color--default)",
|
|
15
|
+
width: 48,
|
|
16
|
+
minWidth: 48,
|
|
17
|
+
flexShrink: 0,
|
|
18
|
+
backgroundColor: "var(--pf-t--global--background--color--primary--default)",
|
|
19
|
+
height: "100%"
|
|
20
|
+
}));
|
|
21
|
+
const IconButton = styled(Button)({
|
|
22
|
+
padding: "8px !important",
|
|
23
|
+
minWidth: 0,
|
|
24
|
+
lineHeight: 1,
|
|
25
|
+
borderRadius: "8px !important",
|
|
26
|
+
border: "1px solid var(--pf-t--global--border--color--default) !important",
|
|
27
|
+
color: "var(--pf-t--global--icon--color--regular)",
|
|
28
|
+
"& svg": {
|
|
29
|
+
width: 18,
|
|
30
|
+
height: 18
|
|
21
31
|
},
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
"&:hover": {
|
|
33
|
+
color: "var(--pf-t--global--icon--color--hover) !important",
|
|
34
|
+
backgroundColor: "var(--pf-t--global--background--color--action--plain--hover) !important"
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
const NewChatIconButton = styled(Button)({
|
|
38
|
+
padding: "8px !important",
|
|
39
|
+
minWidth: 0,
|
|
40
|
+
lineHeight: 1,
|
|
41
|
+
borderRadius: "8px !important",
|
|
42
|
+
border: "1px solid var(--pf-t--global--border--color--default) !important",
|
|
43
|
+
color: "var(--pf-t--global--color--brand--default) !important",
|
|
44
|
+
"&:hover": {
|
|
45
|
+
color: "var(--pf-t--global--color--brand--hover) !important",
|
|
46
|
+
backgroundColor: "var(--pf-t--global--background--color--action--plain--hover) !important"
|
|
37
47
|
},
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
minWidth: 0,
|
|
41
|
-
lineHeight: 1,
|
|
42
|
-
borderRadius: "8px !important",
|
|
43
|
-
border: "1px solid var(--pf-t--global--border--color--default) !important",
|
|
44
|
-
color: "var(--pf-t--global--color--brand--default) !important",
|
|
45
|
-
"&:hover": {
|
|
46
|
-
color: "var(--pf-t--global--color--brand--hover) !important",
|
|
47
|
-
backgroundColor: "var(--pf-t--global--background--color--action--plain--hover) !important"
|
|
48
|
-
},
|
|
49
|
-
"&:disabled": {
|
|
50
|
-
color: "var(--pf-t--global--text--color--disabled) !important"
|
|
51
|
-
}
|
|
48
|
+
"&:disabled": {
|
|
49
|
+
color: "var(--pf-t--global--text--color--disabled) !important"
|
|
52
50
|
}
|
|
53
|
-
})
|
|
51
|
+
});
|
|
54
52
|
const CollapsedHistoryStrip = ({
|
|
55
53
|
onExpand,
|
|
56
54
|
onNewChat,
|
|
57
55
|
newChatDisabled = false
|
|
58
56
|
}) => {
|
|
59
|
-
const classes = useStyles();
|
|
60
57
|
const { t } = useTranslation();
|
|
61
|
-
return /* @__PURE__ */ jsxs(
|
|
58
|
+
return /* @__PURE__ */ jsxs(Strip, { children: [
|
|
62
59
|
/* @__PURE__ */ jsx(Tooltip, { content: t("tooltip.expandHistoryPanel"), position: "right", children: /* @__PURE__ */ jsx(
|
|
63
|
-
|
|
60
|
+
IconButton,
|
|
64
61
|
{
|
|
65
62
|
variant: "plain",
|
|
66
|
-
className: classes.iconButton,
|
|
67
63
|
onClick: onExpand,
|
|
68
64
|
"aria-label": t("tooltip.expandHistoryPanel"),
|
|
69
65
|
children: /* @__PURE__ */ jsx(SidebarExpandIcon, {})
|
|
70
66
|
}
|
|
71
67
|
) }),
|
|
72
68
|
/* @__PURE__ */ jsx(Tooltip, { content: t("tooltip.quickNewChat"), position: "right", children: /* @__PURE__ */ jsx(
|
|
73
|
-
|
|
69
|
+
NewChatIconButton,
|
|
74
70
|
{
|
|
75
71
|
variant: "plain",
|
|
76
|
-
className: classes.newChatIconButton,
|
|
77
72
|
onClick: onNewChat,
|
|
78
73
|
"aria-label": t("tooltip.quickNewChat"),
|
|
79
74
|
isDisabled: newChatDisabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollapsedHistoryStrip.esm.js","sources":["../../src/components/CollapsedHistoryStrip.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"CollapsedHistoryStrip.esm.js","sources":["../../src/components/CollapsedHistoryStrip.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { styled } from '@mui/material/styles';\nimport { Button, Tooltip } from '@patternfly/react-core';\nimport { PenIcon } from '@patternfly/react-icons';\n\nimport { useTranslation } from '../hooks/useTranslation';\nimport { SidebarExpandIcon } from './notebooks/SidebarCollapseIcon';\n\nconst Strip = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: theme.spacing(1.5),\n gap: theme.spacing(1.5),\n borderRight: '1px solid var(--pf-t--global--border--color--default)',\n width: 48,\n minWidth: 48,\n flexShrink: 0,\n backgroundColor: 'var(--pf-t--global--background--color--primary--default)',\n height: '100%',\n}));\n\nconst IconButton = styled(Button)({\n padding: '8px !important',\n minWidth: 0,\n lineHeight: 1,\n borderRadius: '8px !important',\n border: '1px solid var(--pf-t--global--border--color--default) !important',\n color: 'var(--pf-t--global--icon--color--regular)',\n '& svg': {\n width: 18,\n height: 18,\n },\n '&:hover': {\n color: 'var(--pf-t--global--icon--color--hover) !important',\n backgroundColor:\n 'var(--pf-t--global--background--color--action--plain--hover) !important',\n },\n});\n\nconst NewChatIconButton = styled(Button)({\n padding: '8px !important',\n minWidth: 0,\n lineHeight: 1,\n borderRadius: '8px !important',\n border: '1px solid var(--pf-t--global--border--color--default) !important',\n color: 'var(--pf-t--global--color--brand--default) !important',\n '&:hover': {\n color: 'var(--pf-t--global--color--brand--hover) !important',\n backgroundColor:\n 'var(--pf-t--global--background--color--action--plain--hover) !important',\n },\n '&:disabled': {\n color: 'var(--pf-t--global--text--color--disabled) !important',\n },\n});\n\ntype CollapsedHistoryStripProps = {\n onExpand: () => void;\n onNewChat: () => void;\n newChatDisabled?: boolean;\n};\n\nexport const CollapsedHistoryStrip = ({\n onExpand,\n onNewChat,\n newChatDisabled = false,\n}: CollapsedHistoryStripProps) => {\n const { t } = useTranslation();\n\n return (\n <Strip>\n <Tooltip content={t('tooltip.expandHistoryPanel')} position=\"right\">\n <IconButton\n variant=\"plain\"\n onClick={onExpand}\n aria-label={t('tooltip.expandHistoryPanel')}\n >\n <SidebarExpandIcon />\n </IconButton>\n </Tooltip>\n <Tooltip content={t('tooltip.quickNewChat')} position=\"right\">\n <NewChatIconButton\n variant=\"plain\"\n onClick={onNewChat}\n aria-label={t('tooltip.quickNewChat')}\n isDisabled={newChatDisabled}\n >\n <PenIcon />\n </NewChatIconButton>\n </Tooltip>\n </Strip>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAuBA,MAAM,QAAQ,MAAA,CAAO,KAAK,EAAE,CAAC,EAAE,OAAM,MAAO;AAAA,EAC1C,OAAA,EAAS,MAAA;AAAA,EACT,aAAA,EAAe,QAAA;AAAA,EACf,UAAA,EAAY,QAAA;AAAA,EACZ,UAAA,EAAY,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,EAC7B,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,EACtB,WAAA,EAAa,uDAAA;AAAA,EACb,KAAA,EAAO,EAAA;AAAA,EACP,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,CAAA;AAAA,EACZ,eAAA,EAAiB,0DAAA;AAAA,EACjB,MAAA,EAAQ;AACV,CAAA,CAAE,CAAA;AAEF,MAAM,UAAA,GAAa,MAAA,CAAO,MAAM,CAAA,CAAE;AAAA,EAChC,OAAA,EAAS,gBAAA;AAAA,EACT,QAAA,EAAU,CAAA;AAAA,EACV,UAAA,EAAY,CAAA;AAAA,EACZ,YAAA,EAAc,gBAAA;AAAA,EACd,MAAA,EAAQ,kEAAA;AAAA,EACR,KAAA,EAAO,2CAAA;AAAA,EACP,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,oDAAA;AAAA,IACP,eAAA,EACE;AAAA;AAEN,CAAC,CAAA;AAED,MAAM,iBAAA,GAAoB,MAAA,CAAO,MAAM,CAAA,CAAE;AAAA,EACvC,OAAA,EAAS,gBAAA;AAAA,EACT,QAAA,EAAU,CAAA;AAAA,EACV,UAAA,EAAY,CAAA;AAAA,EACZ,YAAA,EAAc,gBAAA;AAAA,EACd,MAAA,EAAQ,kEAAA;AAAA,EACR,KAAA,EAAO,uDAAA;AAAA,EACP,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,qDAAA;AAAA,IACP,eAAA,EACE;AAAA,GACJ;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AAQM,MAAM,wBAAwB,CAAC;AAAA,EACpC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA,GAAkB;AACpB,CAAA,KAAkC;AAChC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAE7B,EAAA,4BACG,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAQ,OAAA,EAAS,CAAA,CAAE,4BAA4B,CAAA,EAAG,UAAS,OAAA,EAC1D,QAAA,kBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAY,EAAE,4BAA4B,CAAA;AAAA,QAE1C,8BAAC,iBAAA,EAAA,EAAkB;AAAA;AAAA,KACrB,EACF,CAAA;AAAA,wBACC,OAAA,EAAA,EAAQ,OAAA,EAAS,EAAE,sBAAsB,CAAA,EAAG,UAAS,OAAA,EACpD,QAAA,kBAAA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAS,SAAA;AAAA,QACT,YAAA,EAAY,EAAE,sBAAsB,CAAA;AAAA,QACpC,UAAA,EAAY,eAAA;AAAA,QAEZ,8BAAC,OAAA,EAAA,EAAQ;AAAA;AAAA,KACX,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -9,6 +9,7 @@ import '@mui/material/styles';
|
|
|
9
9
|
import '@patternfly/chatbot';
|
|
10
10
|
import '@patternfly/react-icons';
|
|
11
11
|
import '@patternfly/react-icons/dist/esm/icons/rh-ui-ai-info-icon';
|
|
12
|
+
import '@mui/material/Box';
|
|
12
13
|
import { useDeleteConversation } from '../hooks/useDeleteConversation.esm.js';
|
|
13
14
|
import '../api/notebooksApi.esm.js';
|
|
14
15
|
import '@backstage/plugin-permission-react';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteModal.esm.js","sources":["../../src/components/DeleteModal.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Alert,\n Button,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '@patternfly/react-core';\n\nimport { useDeleteConversation } from '../hooks';\nimport { useTranslation } from '../hooks/useTranslation';\n\nexport const DeleteModal = ({\n isOpen,\n conversationId,\n chatName,\n onClose,\n onConfirm,\n}: {\n isOpen: boolean;\n conversationId: string;\n chatName?: string;\n onClose: () => void;\n onConfirm: () => void;\n}) => {\n const { t } = useTranslation();\n const {\n mutateAsync: deleteConversation,\n isError,\n error,\n isPending,\n } = useDeleteConversation();\n\n const handleDeleteConversation = async () => {\n try {\n await deleteConversation({\n conversation_id: conversationId,\n invalidateCache: false,\n });\n onConfirm();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn(e);\n }\n };\n\n return (\n <Modal\n variant=\"small\"\n isOpen={isOpen}\n onClose={onClose}\n aria-labelledby=\"delete-modal\"\n aria-describedby=\"delete-modal-confirmation\"\n >\n <ModalHeader\n title={t('conversation.delete.confirm.title' as any, {\n chatName: chatName || '',\n })}\n labelId=\"delete-modal\"\n descriptorId=\"delete-modal-confirmation\"\n />\n <ModalBody id=\"delete-modal-confirmation\">\n {t('conversation.delete.confirm.message')}\n {isError && (\n <Alert\n variant=\"danger\"\n isInline\n title={String(error)}\n className=\"pf-v6-u-mt-md\"\n />\n )}\n </ModalBody>\n <ModalFooter>\n <Button\n variant=\"danger\"\n onClick={handleDeleteConversation}\n isDisabled={isPending}\n >\n {t('conversation.delete.confirm.action')}\n </Button>\n <Button variant=\"link\" onClick={onClose}>\n {t('common.cancel')}\n </Button>\n </ModalFooter>\n </Modal>\n );\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DeleteModal.esm.js","sources":["../../src/components/DeleteModal.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Alert,\n Button,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '@patternfly/react-core';\n\nimport { useDeleteConversation } from '../hooks';\nimport { useTranslation } from '../hooks/useTranslation';\n\nexport const DeleteModal = ({\n isOpen,\n conversationId,\n chatName,\n onClose,\n onConfirm,\n}: {\n isOpen: boolean;\n conversationId: string;\n chatName?: string;\n onClose: () => void;\n onConfirm: () => void;\n}) => {\n const { t } = useTranslation();\n const {\n mutateAsync: deleteConversation,\n isError,\n error,\n isPending,\n } = useDeleteConversation();\n\n const handleDeleteConversation = async () => {\n try {\n await deleteConversation({\n conversation_id: conversationId,\n invalidateCache: false,\n });\n onConfirm();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn(e);\n }\n };\n\n return (\n <Modal\n variant=\"small\"\n isOpen={isOpen}\n onClose={onClose}\n aria-labelledby=\"delete-modal\"\n aria-describedby=\"delete-modal-confirmation\"\n >\n <ModalHeader\n title={t('conversation.delete.confirm.title' as any, {\n chatName: chatName || '',\n })}\n labelId=\"delete-modal\"\n descriptorId=\"delete-modal-confirmation\"\n />\n <ModalBody id=\"delete-modal-confirmation\">\n {t('conversation.delete.confirm.message')}\n {isError && (\n <Alert\n variant=\"danger\"\n isInline\n title={String(error)}\n className=\"pf-v6-u-mt-md\"\n />\n )}\n </ModalBody>\n <ModalFooter>\n <Button\n variant=\"danger\"\n onClick={handleDeleteConversation}\n isDisabled={isPending}\n >\n {t('conversation.delete.confirm.action')}\n </Button>\n <Button variant=\"link\" onClick={onClose}>\n {t('common.cancel')}\n </Button>\n </ModalFooter>\n </Modal>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA4BO,MAAM,cAAc,CAAC;AAAA,EAC1B,MAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,KAMM;AACJ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM;AAAA,IACJ,WAAA,EAAa,kBAAA;AAAA,IACb,OAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,MACE,qBAAA,EAAsB;AAE1B,EAAA,MAAM,2BAA2B,YAAY;AAC3C,IAAA,IAAI;AACF,MAAA,MAAM,kBAAA,CAAmB;AAAA,QACvB,eAAA,EAAiB,cAAA;AAAA,QACjB,eAAA,EAAiB;AAAA,OAClB,CAAA;AACD,MAAA,SAAA,EAAU;AAAA,IACZ,SAAS,CAAA,EAAG;AAEV,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,OAAA;AAAA,MACR,MAAA;AAAA,MACA,OAAA;AAAA,MACA,iBAAA,EAAgB,cAAA;AAAA,MAChB,kBAAA,EAAiB,2BAAA;AAAA,MAEjB,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,mCAAA,EAA4C;AAAA,cACnD,UAAU,QAAA,IAAY;AAAA,aACvB,CAAA;AAAA,YACD,OAAA,EAAQ,cAAA;AAAA,YACR,YAAA,EAAa;AAAA;AAAA,SACf;AAAA,wBACA,IAAA,CAAC,SAAA,EAAA,EAAU,EAAA,EAAG,2BAAA,EACX,QAAA,EAAA;AAAA,UAAA,CAAA,CAAE,qCAAqC,CAAA;AAAA,UACvC,OAAA,oBACC,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,QAAA;AAAA,cACR,QAAA,EAAQ,IAAA;AAAA,cACR,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,cACnB,SAAA,EAAU;AAAA;AAAA;AACZ,SAAA,EAEJ,CAAA;AAAA,6BACC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,QAAA;AAAA,cACR,OAAA,EAAS,wBAAA;AAAA,cACT,UAAA,EAAY,SAAA;AAAA,cAEX,YAAE,oCAAoC;AAAA;AAAA,WACzC;AAAA,0BACA,GAAA,CAAC,UAAO,OAAA,EAAQ,MAAA,EAAO,SAAS,OAAA,EAC7B,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import
|
|
2
|
+
import Box from '@mui/material/Box';
|
|
3
|
+
import Divider from '@mui/material/Divider';
|
|
3
4
|
import { FileDetailsLabel } from '@patternfly/chatbot';
|
|
4
5
|
import { useFileAttachmentContext } from './AttachmentContext.esm.js';
|
|
5
6
|
|
|
@@ -30,7 +31,7 @@ const FilePreview = () => {
|
|
|
30
31
|
};
|
|
31
32
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
32
33
|
fileContents.length > 0 && /* @__PURE__ */ jsx(Divider, {}),
|
|
33
|
-
fileContents && /* @__PURE__ */ jsx(
|
|
34
|
+
fileContents && /* @__PURE__ */ jsx(Box, { sx: { display: "flex", gap: "10px" }, children: fileContents.map((file, index) => /* @__PURE__ */ jsx(
|
|
34
35
|
FileDetailsLabel,
|
|
35
36
|
{
|
|
36
37
|
fileName: file.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilePreview.esm.js","sources":["../../src/components/FilePreview.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport
|
|
1
|
+
{"version":3,"file":"FilePreview.esm.js","sources":["../../src/components/FilePreview.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Box from '@mui/material/Box';\nimport Divider from '@mui/material/Divider';\nimport { FileDetailsLabel } from '@patternfly/chatbot';\n\nimport { useFileAttachmentContext } from './AttachmentContext';\n\nconst FilePreview = () => {\n const {\n fileContents,\n isLoadingFile,\n modalState,\n setFileContents,\n setCurrentFileContent,\n } = useFileAttachmentContext();\n\n const { setIsEditModalOpen, setIsPreviewModalOpen, setPreviewModalKey } =\n modalState;\n\n const onAttachmentClick = (_: React.MouseEvent, name: string) => {\n const file = fileContents?.find(f => f.name === name);\n setCurrentFileContent({\n name,\n type: file?.type ?? 'text/plain',\n content: file?.content ?? '',\n });\n setPreviewModalKey(prev => prev + 1); // update key to re-render content\n setIsEditModalOpen(false);\n setIsPreviewModalOpen(true);\n };\n\n const removeFile = (indexToRemove: number) => {\n setFileContents(prevContents =>\n prevContents.filter((_, index) => index !== indexToRemove),\n );\n };\n\n return (\n <>\n {fileContents.length > 0 && <Divider />}\n {fileContents && (\n <Box sx={{ display: 'flex', gap: '10px' }}>\n {fileContents.map((file, index) => (\n <FileDetailsLabel\n key={index}\n fileName={file.name}\n isLoading={isLoadingFile[file.name]}\n onClick={onAttachmentClick}\n onClose={() => {\n removeFile(index);\n }}\n />\n ))}\n </Box>\n )}\n </>\n );\n};\n\nexport default FilePreview;\n"],"names":[],"mappings":";;;;;;AAsBA,MAAM,cAAc,MAAM;AACxB,EAAA,MAAM;AAAA,IACJ,YAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,MACE,wBAAA,EAAyB;AAE7B,EAAA,MAAM,EAAE,kBAAA,EAAoB,qBAAA,EAAuB,kBAAA,EAAmB,GACpE,UAAA;AAEF,EAAA,MAAM,iBAAA,GAAoB,CAAC,CAAA,EAAqB,IAAA,KAAiB;AAC/D,IAAA,MAAM,OAAO,YAAA,EAAc,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,IAAI,CAAA;AACpD,IAAA,qBAAA,CAAsB;AAAA,MACpB,IAAA;AAAA,MACA,IAAA,EAAM,MAAM,IAAA,IAAQ,YAAA;AAAA,MACpB,OAAA,EAAS,MAAM,OAAA,IAAW;AAAA,KAC3B,CAAA;AACD,IAAA,kBAAA,CAAmB,CAAA,IAAA,KAAQ,OAAO,CAAC,CAAA;AACnC,IAAA,kBAAA,CAAmB,KAAK,CAAA;AACxB,IAAA,qBAAA,CAAsB,IAAI,CAAA;AAAA,EAC5B,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,aAAA,KAA0B;AAC5C,IAAA,eAAA;AAAA,MAAgB,kBACd,YAAA,CAAa,MAAA,CAAO,CAAC,CAAA,EAAG,KAAA,KAAU,UAAU,aAAa;AAAA,KAC3D;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,YAAA,CAAa,MAAA,GAAS,CAAA,oBAAK,GAAA,CAAC,OAAA,EAAA,EAAQ,CAAA;AAAA,IACpC,YAAA,oBACC,GAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAI,EAAE,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAO,EACrC,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,MAAM,KAAA,qBACvB,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QAEC,UAAU,IAAA,CAAK,IAAA;AAAA,QACf,SAAA,EAAW,aAAA,CAAc,IAAA,CAAK,IAAI,CAAA;AAAA,QAClC,OAAA,EAAS,iBAAA;AAAA,QACT,SAAS,MAAM;AACb,UAAA,UAAA,CAAW,KAAK,CAAA;AAAA,QAClB;AAAA,OAAA;AAAA,MANK;AAAA,KAQR,CAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;;;;"}
|