@red-hat-developer-hub/backstage-plugin-intelligent-assistant 5.0.1 → 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.
Files changed (93) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/alpha.d.ts +1 -2
  3. package/dist/components/Attachment.esm.js +10 -12
  4. package/dist/components/Attachment.esm.js.map +1 -1
  5. package/dist/components/CollapsedHistoryStrip.esm.js +46 -51
  6. package/dist/components/CollapsedHistoryStrip.esm.js.map +1 -1
  7. package/dist/components/FilePreview.esm.js +3 -2
  8. package/dist/components/FilePreview.esm.js.map +1 -1
  9. package/dist/components/LightSpeedChat.esm.js +580 -745
  10. package/dist/components/LightSpeedChat.esm.js.map +1 -1
  11. package/dist/components/LightspeedChatBox.esm.js +2 -3
  12. package/dist/components/LightspeedChatBox.esm.js.map +1 -1
  13. package/dist/components/LightspeedChatBoxHeader.esm.js +38 -34
  14. package/dist/components/LightspeedChatBoxHeader.esm.js.map +1 -1
  15. package/dist/components/LightspeedChatContainer.esm.js +6 -8
  16. package/dist/components/LightspeedChatContainer.esm.js.map +1 -1
  17. package/dist/components/LightspeedChatModelsState.esm.js +67 -73
  18. package/dist/components/LightspeedChatModelsState.esm.js.map +1 -1
  19. package/dist/components/LightspeedDrawerContext.esm.js.map +1 -1
  20. package/dist/components/LightspeedDrawerProvider.esm.js +13 -16
  21. package/dist/components/LightspeedDrawerProvider.esm.js.map +1 -1
  22. package/dist/components/LightspeedFABContent.esm.js +40 -9
  23. package/dist/components/LightspeedFABContent.esm.js.map +1 -1
  24. package/dist/components/LightspeedPage.esm.js +1 -10
  25. package/dist/components/LightspeedPage.esm.js.map +1 -1
  26. package/dist/components/McpConfigureServerModal.esm.js +79 -86
  27. package/dist/components/McpConfigureServerModal.esm.js.map +1 -1
  28. package/dist/components/McpServersSettings.esm.js +246 -212
  29. package/dist/components/McpServersSettings.esm.js.map +1 -1
  30. package/dist/components/MessageBarModelSelector.esm.js +29 -33
  31. package/dist/components/MessageBarModelSelector.esm.js.map +1 -1
  32. package/dist/components/PermissionRequiredState.esm.js +63 -63
  33. package/dist/components/PermissionRequiredState.esm.js.map +1 -1
  34. package/dist/components/RenameConversationModal.esm.js +38 -31
  35. package/dist/components/RenameConversationModal.esm.js.map +1 -1
  36. package/dist/components/Router.esm.js +4 -13
  37. package/dist/components/Router.esm.js.map +1 -1
  38. package/dist/components/ToastAlertGroup.esm.js +24 -40
  39. package/dist/components/ToastAlertGroup.esm.js.map +1 -1
  40. package/dist/components/ToolCallContent.esm.js +8 -11
  41. package/dist/components/ToolCallContent.esm.js.map +1 -1
  42. package/dist/components/notebooks/AddDocumentModal.esm.js +232 -252
  43. package/dist/components/notebooks/AddDocumentModal.esm.js.map +1 -1
  44. package/dist/components/notebooks/DeleteDocumentModal.esm.js +35 -77
  45. package/dist/components/notebooks/DeleteDocumentModal.esm.js.map +1 -1
  46. package/dist/components/notebooks/DeleteNotebookModal.esm.js +46 -81
  47. package/dist/components/notebooks/DeleteNotebookModal.esm.js.map +1 -1
  48. package/dist/components/notebooks/DocumentSidebar.esm.js +172 -196
  49. package/dist/components/notebooks/DocumentSidebar.esm.js.map +1 -1
  50. package/dist/components/notebooks/FileListItem.esm.js +69 -57
  51. package/dist/components/notebooks/FileListItem.esm.js.map +1 -1
  52. package/dist/components/notebooks/FileTypeIcon.esm.js +17 -27
  53. package/dist/components/notebooks/FileTypeIcon.esm.js.map +1 -1
  54. package/dist/components/notebooks/NotebookCard.esm.js +86 -25
  55. package/dist/components/notebooks/NotebookCard.esm.js.map +1 -1
  56. package/dist/components/notebooks/NotebookView.esm.js +367 -380
  57. package/dist/components/notebooks/NotebookView.esm.js.map +1 -1
  58. package/dist/components/notebooks/NotebooksTab.esm.js +93 -30
  59. package/dist/components/notebooks/NotebooksTab.esm.js.map +1 -1
  60. package/dist/components/notebooks/OverwriteConfirmModal.esm.js +142 -184
  61. package/dist/components/notebooks/OverwriteConfirmModal.esm.js.map +1 -1
  62. package/dist/components/notebooks/UploadResourceScreen.esm.js +58 -50
  63. package/dist/components/notebooks/UploadResourceScreen.esm.js.map +1 -1
  64. package/dist/components/notebooks/notebookDialogStyles.esm.js +33 -37
  65. package/dist/components/notebooks/notebookDialogStyles.esm.js.map +1 -1
  66. package/dist/const.esm.js +15 -2
  67. package/dist/const.esm.js.map +1 -1
  68. package/dist/hooks/useAutoScroll.esm.js +11 -11
  69. package/dist/hooks/useAutoScroll.esm.js.map +1 -1
  70. package/dist/hooks/useBufferedMessages.esm.js +5 -5
  71. package/dist/hooks/useBufferedMessages.esm.js.map +1 -1
  72. package/dist/hooks/useIsMobile.esm.js +3 -3
  73. package/dist/hooks/useIsMobile.esm.js.map +1 -1
  74. package/dist/translations/de.esm.js +1 -2
  75. package/dist/translations/de.esm.js.map +1 -1
  76. package/dist/translations/es.esm.js +1 -2
  77. package/dist/translations/es.esm.js.map +1 -1
  78. package/dist/translations/fr.esm.js +1 -2
  79. package/dist/translations/fr.esm.js.map +1 -1
  80. package/dist/translations/it.esm.js +1 -2
  81. package/dist/translations/it.esm.js.map +1 -1
  82. package/dist/translations/ja.esm.js +1 -2
  83. package/dist/translations/ja.esm.js.map +1 -1
  84. package/dist/translations/ref.esm.js +1 -2
  85. package/dist/translations/ref.esm.js.map +1 -1
  86. package/dist/types.esm.js.map +1 -1
  87. package/dist/utils/fab-anchor-utils.esm.js +41 -0
  88. package/dist/utils/fab-anchor-utils.esm.js.map +1 -0
  89. package/dist/utils/scoped-dialog-utils.esm.js +6 -3
  90. package/dist/utils/scoped-dialog-utils.esm.js.map +1 -1
  91. package/package.json +4 -8
  92. package/dist/utils/generateClassName.esm.js +0 -12
  93. package/dist/utils/generateClassName.esm.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
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
+
3
12
  ## 5.0.1
4
13
 
5
14
  ### Patch 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 'disclaimer.withoutValidation': string;
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,18 +1,17 @@
1
- import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
- import { makeStyles } from '@material-ui/core';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { styled } from '@mui/material/styles';
3
3
  import { ChatbotDisplayMode } from '@patternfly/chatbot';
4
4
  import { AttachmentEdit } from '@patternfly/chatbot/dist/dynamic/AttachmentEdit';
5
5
  import { PreviewAttachment } from '@patternfly/chatbot/dist/dynamic/PreviewAttachment';
6
6
  import { useTranslation } from '../hooks/useTranslation.esm.js';
7
7
  import { useFileAttachmentContext } from './AttachmentContext.esm.js';
8
8
 
9
- const useStyles = makeStyles(() => ({
10
- modalFooter: {
11
- "&>button": {
12
- width: "12% !important"
13
- }
9
+ const MODAL_FOOTER_CLASS = "ia-attachment-modal-footer";
10
+ const AttachmentScope = styled("div")({
11
+ [`& .${MODAL_FOOTER_CLASS} > button`]: {
12
+ width: "12% !important"
14
13
  }
15
- }));
14
+ });
16
15
  const Attachment = () => {
17
16
  const {
18
17
  currentFileContent,
@@ -20,7 +19,6 @@ const Attachment = () => {
20
19
  modalState,
21
20
  setCurrentFileContent
22
21
  } = useFileAttachmentContext();
23
- const classes = useStyles();
24
22
  const { t } = useTranslation();
25
23
  if (!currentFileContent) {
26
24
  return null;
@@ -33,7 +31,7 @@ const Attachment = () => {
33
31
  setIsEditModalOpen,
34
32
  setIsPreviewModalOpen
35
33
  } = modalState;
36
- return /* @__PURE__ */ jsxs(Fragment, { children: [
34
+ return /* @__PURE__ */ jsxs(AttachmentScope, { children: [
37
35
  /* @__PURE__ */ jsx(
38
36
  PreviewAttachment,
39
37
  {
@@ -43,7 +41,7 @@ const Attachment = () => {
43
41
  secondaryActionButtonText: t("modal.close"),
44
42
  primaryActionButtonText: t("modal.edit"),
45
43
  title: t("modal.title.preview"),
46
- modalFooterClassName: classes.modalFooter,
44
+ modalFooterClassName: MODAL_FOOTER_CLASS,
47
45
  onEdit: () => {
48
46
  setIsPreviewModalOpen(false);
49
47
  setIsEditModalOpen(true);
@@ -66,7 +64,7 @@ const Attachment = () => {
66
64
  title: t("modal.title.edit"),
67
65
  secondaryActionButtonText: t("modal.cancel"),
68
66
  primaryActionButtonText: t("modal.save"),
69
- modalFooterClassName: classes.modalFooter,
67
+ modalFooterClassName: MODAL_FOOTER_CLASS,
70
68
  onSave: (_event, content) => {
71
69
  setCurrentFileContent({
72
70
  ...currentFileContent,
@@ -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 { makeStyles } from '@material-ui/core';\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 useStyles = makeStyles(() => ({\n modalFooter: {\n '&>button': {\n width: '12% !important',\n },\n },\n}));\nconst Attachment = () => {\n const {\n currentFileContent,\n setFileContents,\n modalState,\n setCurrentFileContent,\n } = useFileAttachmentContext();\n const classes = useStyles();\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 <>\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={classes.modalFooter}\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={classes.modalFooter}\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 </>\n );\n};\n\nexport default Attachment;\n"],"names":[],"mappings":"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"}
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 { makeStyles } from '@material-ui/core';
3
- import { Tooltip, Button } from '@patternfly/react-core';
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 useStyles = makeStyles((theme) => ({
9
- strip: {
10
- display: "flex",
11
- flexDirection: "column",
12
- alignItems: "center",
13
- paddingTop: theme.spacing(1.5),
14
- gap: theme.spacing(1.5),
15
- borderRight: "1px solid var(--pf-t--global--border--color--default)",
16
- width: 48,
17
- minWidth: 48,
18
- flexShrink: 0,
19
- backgroundColor: "var(--pf-t--global--background--color--primary--default)",
20
- height: "100%"
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
- iconButton: {
23
- padding: "8px !important",
24
- minWidth: 0,
25
- lineHeight: 1,
26
- borderRadius: "8px !important",
27
- border: "1px solid var(--pf-t--global--border--color--default) !important",
28
- color: "var(--pf-t--global--icon--color--regular)",
29
- "& svg": {
30
- width: 18,
31
- height: 18
32
- },
33
- "&:hover": {
34
- color: "var(--pf-t--global--icon--color--hover) !important",
35
- backgroundColor: "var(--pf-t--global--background--color--action--plain--hover) !important"
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
- newChatIconButton: {
39
- padding: "8px !important",
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("div", { className: classes.strip, children: [
58
+ return /* @__PURE__ */ jsxs(Strip, { children: [
62
59
  /* @__PURE__ */ jsx(Tooltip, { content: t("tooltip.expandHistoryPanel"), position: "right", children: /* @__PURE__ */ jsx(
63
- Button,
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
- Button,
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 { makeStyles } from '@material-ui/core';\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 useStyles = makeStyles(theme => ({\n strip: {\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 iconButton: {\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 newChatIconButton: {\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}));\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 classes = useStyles();\n const { t } = useTranslation();\n\n return (\n <div className={classes.strip}>\n <Tooltip content={t('tooltip.expandHistoryPanel')} position=\"right\">\n <Button\n variant=\"plain\"\n className={classes.iconButton}\n onClick={onExpand}\n aria-label={t('tooltip.expandHistoryPanel')}\n >\n <SidebarExpandIcon />\n </Button>\n </Tooltip>\n <Tooltip content={t('tooltip.quickNewChat')} position=\"right\">\n <Button\n variant=\"plain\"\n className={classes.newChatIconButton}\n onClick={onNewChat}\n aria-label={t('tooltip.quickNewChat')}\n isDisabled={newChatDisabled}\n >\n <PenIcon />\n </Button>\n </Tooltip>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAuBA,MAAM,SAAA,GAAY,WAAW,CAAA,KAAA,MAAU;AAAA,EACrC,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,UAAA,EAAY,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,IAC7B,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,IACtB,WAAA,EAAa,uDAAA;AAAA,IACb,KAAA,EAAO,EAAA;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,CAAA;AAAA,IACZ,eAAA,EAAiB,0DAAA;AAAA,IACjB,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,gBAAA;AAAA,IACT,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY,CAAA;AAAA,IACZ,YAAA,EAAc,gBAAA;AAAA,IACd,MAAA,EAAQ,kEAAA;AAAA,IACR,KAAA,EAAO,2CAAA;AAAA,IACP,OAAA,EAAS;AAAA,MACP,KAAA,EAAO,EAAA;AAAA,MACP,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,SAAA,EAAW;AAAA,MACT,KAAA,EAAO,oDAAA;AAAA,MACP,eAAA,EACE;AAAA;AACJ,GACF;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,OAAA,EAAS,gBAAA;AAAA,IACT,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY,CAAA;AAAA,IACZ,YAAA,EAAc,gBAAA;AAAA,IACd,MAAA,EAAQ,kEAAA;AAAA,IACR,KAAA,EAAO,uDAAA;AAAA,IACP,SAAA,EAAW;AAAA,MACT,KAAA,EAAO,qDAAA;AAAA,MACP,eAAA,EACE;AAAA,KACJ;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA,CAAE,CAAA;AAQK,MAAM,wBAAwB,CAAC;AAAA,EACpC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA,GAAkB;AACpB,CAAA,KAAkC;AAChC,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAE7B,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,KAAA,EACtB,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAQ,OAAA,EAAS,CAAA,CAAE,4BAA4B,CAAA,EAAG,UAAS,OAAA,EAC1D,QAAA,kBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,OAAA;AAAA,QACR,WAAW,OAAA,CAAQ,UAAA;AAAA,QACnB,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,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,OAAA;AAAA,QACR,WAAW,OAAA,CAAQ,iBAAA;AAAA,QACnB,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;;;;"}
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;;;;"}
@@ -1,5 +1,6 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
- import { Divider } from '@material-ui/core';
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("div", { style: { display: "flex", gap: "10px" }, children: fileContents.map((file, index) => /* @__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 { Divider } from '@material-ui/core';\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 <div style={{ 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 </div>\n )}\n </>\n );\n};\n\nexport default FilePreview;\n"],"names":[],"mappings":";;;;;AAqBA,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,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,MAAA,EAAO,EACxC,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;;;;"}
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;;;;"}