@red-hat-developer-hub/backstage-plugin-lightspeed 2.6.5 → 2.6.7
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 +14 -0
- package/dist/alpha.d.ts +1 -0
- package/dist/components/LightSpeedChat.esm.js +42 -27
- package/dist/components/LightSpeedChat.esm.js.map +1 -1
- package/dist/components/ToolCallContent.esm.js +11 -1
- package/dist/components/ToolCallContent.esm.js.map +1 -1
- package/dist/components/notebooks/NotebookCard.esm.js +93 -82
- package/dist/components/notebooks/NotebookCard.esm.js.map +1 -1
- package/dist/components/notebooks/NotebookView.esm.js +17 -5
- package/dist/components/notebooks/NotebookView.esm.js.map +1 -1
- package/dist/translations/de.esm.js +1 -0
- package/dist/translations/de.esm.js.map +1 -1
- package/dist/translations/es.esm.js +1 -0
- package/dist/translations/es.esm.js.map +1 -1
- package/dist/translations/fr.esm.js +1 -0
- package/dist/translations/fr.esm.js.map +1 -1
- package/dist/translations/it.esm.js +1 -0
- package/dist/translations/it.esm.js.map +1 -1
- package/dist/translations/ja.esm.js +1 -0
- package/dist/translations/ja.esm.js.map +1 -1
- package/dist/translations/ref.esm.js +1 -0
- package/dist/translations/ref.esm.js.map +1 -1
- package/dist/utils/formatToolResponseForMarkdown.esm.js +65 -13
- package/dist/utils/formatToolResponseForMarkdown.esm.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallContent.esm.js","sources":["../../src/components/ToolCallContent.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 { Message } from '@patternfly/chatbot';\nimport {\n Content,\n ContentVariants,\n DescriptionList,\n DescriptionListDescription,\n DescriptionListGroup,\n DescriptionListTerm,\n Flex,\n FlexItem,\n Label,\n} from '@patternfly/react-core';\nimport { WrenchIcon } from '@patternfly/react-icons';\n\nimport { useTranslation } from '../hooks/useTranslation';\nimport { ToolCall } from '../types';\nimport { formatToolResponseForMarkdown } from '../utils/formatToolResponseForMarkdown';\n\ninterface ToolCallContentProps {\n toolCall: ToolCall;\n role?: 'user' | 'bot';\n}\n\n/**\n * Lightweight component for rendering tool call expandable content.\n * Used inside PatternFly's ToolCall component's expandableContent prop.\n */\nexport const ToolCallContent = ({\n toolCall,\n role = 'bot',\n}: ToolCallContentProps) => {\n const { t } = useTranslation();\n\n const formatExecutionTime = (seconds?: number): string => {\n if (seconds === undefined) return '';\n if (seconds < 1) return `${Math.round(seconds * 1000)}ms`;\n return `${seconds.toFixed(2)}s`;\n };\n\n const getParameterKeys = (): string[] => {\n if (!toolCall.arguments) return [];\n return Object.keys(toolCall.arguments).filter(\n key =>\n key !== 'server_label' &&\n toolCall.arguments[key] !== '' &&\n toolCall.arguments[key] !== null,\n );\n };\n\n const getThinkingTime = (): number => {\n if (toolCall.startTime && toolCall.endTime) {\n return Math.round((toolCall.endTime - toolCall.startTime) / 1000);\n }\n return 0;\n };\n\n const thinkingTime = getThinkingTime();\n const parameterKeys = getParameterKeys();\n\n const mcpServerTitle = (() => {\n const label = toolCall.arguments?.server_label;\n if (typeof label === 'string' && label.trim() !== '') {\n return label.trim();\n }\n return t('toolCall.mcpServer');\n })();\n\n return (\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsSm' }}\n >\n {/* Thinking Time */}\n {thinkingTime > 0 && (\n <FlexItem>\n <Content component={ContentVariants.small}>\n {t('toolCall.thinking' as any, {\n seconds: String(thinkingTime),\n })}\n </Content>\n </FlexItem>\n )}\n\n {/* Summary */}\n <FlexItem>\n <Content component={ContentVariants.p}>{t('toolCall.summary')}</Content>\n </FlexItem>\n\n {/* Tool Header with MCP Server */}\n <FlexItem>\n <div\n style={{\n border: '1px solid var(--pf-t--global--border--color--default)',\n borderRadius: 'var(--pf-t--global--border--radius--small)',\n padding: 'var(--pf-t--global--spacer--md)',\n }}\n >\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsSm' }}\n >\n <FlexItem\n style={{\n borderBottom:\n '1px solid var(--pf-t--global--border--color--default)',\n paddingBottom: 'var(--pf-t--global--spacer--sm)',\n }}\n >\n <Content\n component={ContentVariants.p}\n style={{ marginBlockEnd: 0 }}\n >\n <WrenchIcon\n style={{\n color: 'var(--pf-t--global--icon--color--brand--default)',\n marginRight: '0.5em',\n }}\n />\n <strong>{mcpServerTitle}</strong>\n </Content>\n {toolCall.executionTime !== undefined && (\n <Content component={ContentVariants.small}>\n {t('toolCall.executionTime')}\n {formatExecutionTime(toolCall.executionTime)}\n </Content>\n )}\n </FlexItem>\n\n {/* Description List for Parameters and Response */}\n <FlexItem>\n <DescriptionList\n style={\n {\n '--pf-v6-c-description-list--RowGap':\n 'var(--pf-t--global--spacer--md)',\n } as any\n }\n aria-label=\"Tool response\"\n >\n {/* Parameters Section */}\n {parameterKeys.length > 0 && (\n <DescriptionListGroup\n style={\n {\n '--pf-v6-c-description-list__group--RowGap':\n 'var(--pf-t--global--spacer--xs)',\n } as any\n }\n >\n <DescriptionListTerm>\n {t('toolCall.parameters' as any, {\n defaultValue: 'Parameters',\n }) || 'Parameters'}\n </DescriptionListTerm>\n <DescriptionListDescription\n style={{ marginInlineStart: 0 }}\n >\n <Flex direction={{ default: 'column' }}>\n {toolCall.description && (\n <FlexItem>\n <Content component={ContentVariants.small}>\n {toolCall.description}\n </Content>\n </FlexItem>\n )}\n <FlexItem>\n <Flex\n gap={{ default: 'gapSm' }}\n flexWrap={{ default: 'wrap' }}\n >\n {parameterKeys.map(key => (\n <FlexItem key={key}>\n <Label variant=\"outline\" color=\"blue\">\n {key}\n </Label>\n </FlexItem>\n ))}\n </Flex>\n </FlexItem>\n </Flex>\n </DescriptionListDescription>\n </DescriptionListGroup>\n )}\n\n {/* Response Section */}\n {toolCall.response && (\n <DescriptionListGroup\n style={\n {\n '--pf-v6-c-description-list__group--RowGap':\n 'var(--pf-t--global--spacer--xs)',\n } as any\n }\n >\n {/* <DescriptionListTerm> */}\n <Flex\n alignItems={{ default: 'alignItemsCenter' }}\n justifyContent={{ default: 'justifyContentSpaceBetween' }}\n >\n <FlexItem flex={{ default: 'flex_1' }}>\n <strong> {t('toolCall.response')}</strong>\n </FlexItem>\n </Flex>\n {/* </DescriptionListTerm> */}\n <DescriptionListDescription\n style={{ marginInlineStart: 0 }}\n >\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsXs' }}\n >\n <FlexItem>\n <Message\n content={formatToolResponseForMarkdown(\n toolCall.response,\n )}\n role={role}\n codeBlockProps={{\n isExpandable: true,\n expandableSectionProps: {\n truncateMaxLines: 12,\n },\n }}\n />\n </FlexItem>\n </Flex>\n </DescriptionListDescription>\n </DescriptionListGroup>\n )}\n </DescriptionList>\n </FlexItem>\n </Flex>\n </div>\n </FlexItem>\n </Flex>\n );\n};\n\nexport default ToolCallContent;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ToolCallContent.esm.js","sources":["../../src/components/ToolCallContent.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 { Message } from '@patternfly/chatbot';\nimport {\n Content,\n ContentVariants,\n DescriptionList,\n DescriptionListDescription,\n DescriptionListGroup,\n DescriptionListTerm,\n Flex,\n FlexItem,\n Label,\n} from '@patternfly/react-core';\nimport { WrenchIcon } from '@patternfly/react-icons';\n\nimport { useTranslation } from '../hooks/useTranslation';\nimport { ToolCall } from '../types';\nimport { formatToolResponseForMarkdown } from '../utils/formatToolResponseForMarkdown';\n\ninterface ToolCallContentProps {\n toolCall: ToolCall;\n role?: 'user' | 'bot';\n}\n\nconst useStyles = makeStyles(() => ({\n codeBlock: {\n '& .pf-chatbot__message-code-block': {\n border: '1px solid var(--pf-t--global--border--color--default)',\n borderRadius: 'var(--pf-t--global--border--radius--small)',\n },\n },\n}));\n\n/**\n * Lightweight component for rendering tool call expandable content.\n * Used inside PatternFly's ToolCall component's expandableContent prop.\n */\nexport const ToolCallContent = ({\n toolCall,\n role = 'bot',\n}: ToolCallContentProps) => {\n const classes = useStyles();\n const { t } = useTranslation();\n\n const formatExecutionTime = (seconds?: number): string => {\n if (seconds === undefined) return '';\n if (seconds < 1) return `${Math.round(seconds * 1000)}ms`;\n return `${seconds.toFixed(2)}s`;\n };\n\n const getParameterKeys = (): string[] => {\n if (!toolCall.arguments) return [];\n return Object.keys(toolCall.arguments).filter(\n key =>\n key !== 'server_label' &&\n toolCall.arguments[key] !== '' &&\n toolCall.arguments[key] !== null,\n );\n };\n\n const getThinkingTime = (): number => {\n if (toolCall.startTime && toolCall.endTime) {\n return Math.round((toolCall.endTime - toolCall.startTime) / 1000);\n }\n return 0;\n };\n\n const thinkingTime = getThinkingTime();\n const parameterKeys = getParameterKeys();\n\n const mcpServerTitle = (() => {\n const label = toolCall.arguments?.server_label;\n if (typeof label === 'string' && label.trim() !== '') {\n return label.trim();\n }\n return t('toolCall.mcpServer');\n })();\n\n return (\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsSm' }}\n >\n {/* Thinking Time */}\n {thinkingTime > 0 && (\n <FlexItem>\n <Content component={ContentVariants.small}>\n {t('toolCall.thinking' as any, {\n seconds: String(thinkingTime),\n })}\n </Content>\n </FlexItem>\n )}\n\n {/* Summary */}\n <FlexItem>\n <Content component={ContentVariants.p}>{t('toolCall.summary')}</Content>\n </FlexItem>\n\n {/* Tool Header with MCP Server */}\n <FlexItem>\n <div\n style={{\n border: '1px solid var(--pf-t--global--border--color--default)',\n borderRadius: 'var(--pf-t--global--border--radius--small)',\n padding: 'var(--pf-t--global--spacer--md)',\n }}\n >\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsSm' }}\n >\n <FlexItem\n style={{\n borderBottom:\n '1px solid var(--pf-t--global--border--color--default)',\n paddingBottom: 'var(--pf-t--global--spacer--sm)',\n }}\n >\n <Content\n component={ContentVariants.p}\n style={{ marginBlockEnd: 0 }}\n >\n <WrenchIcon\n style={{\n color: 'var(--pf-t--global--icon--color--brand--default)',\n marginRight: '0.5em',\n }}\n />\n <strong>{mcpServerTitle}</strong>\n </Content>\n {toolCall.executionTime !== undefined && (\n <Content component={ContentVariants.small}>\n {t('toolCall.executionTime')}\n {formatExecutionTime(toolCall.executionTime)}\n </Content>\n )}\n </FlexItem>\n\n {/* Description List for Parameters and Response */}\n <FlexItem>\n <DescriptionList\n style={\n {\n '--pf-v6-c-description-list--RowGap':\n 'var(--pf-t--global--spacer--md)',\n } as any\n }\n aria-label=\"Tool response\"\n >\n {/* Parameters Section */}\n {parameterKeys.length > 0 && (\n <DescriptionListGroup\n style={\n {\n '--pf-v6-c-description-list__group--RowGap':\n 'var(--pf-t--global--spacer--xs)',\n } as any\n }\n >\n <DescriptionListTerm>\n {t('toolCall.parameters' as any, {\n defaultValue: 'Parameters',\n }) || 'Parameters'}\n </DescriptionListTerm>\n <DescriptionListDescription\n style={{ marginInlineStart: 0 }}\n >\n <Flex direction={{ default: 'column' }}>\n {toolCall.description && (\n <FlexItem>\n <Content component={ContentVariants.small}>\n {toolCall.description}\n </Content>\n </FlexItem>\n )}\n <FlexItem>\n <Flex\n gap={{ default: 'gapSm' }}\n flexWrap={{ default: 'wrap' }}\n >\n {parameterKeys.map(key => (\n <FlexItem key={key}>\n <Label variant=\"outline\" color=\"blue\">\n {key}\n </Label>\n </FlexItem>\n ))}\n </Flex>\n </FlexItem>\n </Flex>\n </DescriptionListDescription>\n </DescriptionListGroup>\n )}\n\n {/* Response Section */}\n {toolCall.response && (\n <DescriptionListGroup\n style={\n {\n '--pf-v6-c-description-list__group--RowGap':\n 'var(--pf-t--global--spacer--xs)',\n } as any\n }\n >\n {/* <DescriptionListTerm> */}\n <Flex\n alignItems={{ default: 'alignItemsCenter' }}\n justifyContent={{ default: 'justifyContentSpaceBetween' }}\n >\n <FlexItem flex={{ default: 'flex_1' }}>\n <strong> {t('toolCall.response')}</strong>\n </FlexItem>\n </Flex>\n {/* </DescriptionListTerm> */}\n <DescriptionListDescription\n style={{ marginInlineStart: 0 }}\n >\n <Flex\n direction={{ default: 'column' }}\n spaceItems={{ default: 'spaceItemsXs' }}\n >\n <FlexItem className={classes.codeBlock}>\n <Message\n content={formatToolResponseForMarkdown(\n toolCall.response,\n )}\n role={role}\n codeBlockProps={{\n isExpandable: true,\n expandableSectionProps: {\n truncateMaxLines: 12,\n },\n }}\n />\n </FlexItem>\n </Flex>\n </DescriptionListDescription>\n </DescriptionListGroup>\n )}\n </DescriptionList>\n </FlexItem>\n </Flex>\n </div>\n </FlexItem>\n </Flex>\n );\n};\n\nexport default ToolCallContent;\n"],"names":[],"mappings":"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"}
|
|
@@ -14,94 +14,105 @@ const NotebookCard = ({
|
|
|
14
14
|
onRename,
|
|
15
15
|
onDelete,
|
|
16
16
|
t
|
|
17
|
-
}) =>
|
|
18
|
-
|
|
19
|
-
{
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
);
|
|
53
|
-
},
|
|
54
|
-
children: /* @__PURE__ */ jsx(EllipsisVIcon, {})
|
|
55
|
-
}
|
|
56
|
-
),
|
|
57
|
-
children: /* @__PURE__ */ jsxs(DropdownList, { className: classes.notebookDropdownList, children: [
|
|
58
|
-
/* @__PURE__ */ jsx(
|
|
59
|
-
DropdownItem,
|
|
17
|
+
}) => {
|
|
18
|
+
const isMenuOpen = openNotebookMenuId === notebook.session_id;
|
|
19
|
+
const handleCardKeyDown = (e) => {
|
|
20
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
21
|
+
e.preventDefault();
|
|
22
|
+
onClick(notebook);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
return /* @__PURE__ */ jsxs(
|
|
26
|
+
Card,
|
|
27
|
+
{
|
|
28
|
+
className: classes.notebookCard,
|
|
29
|
+
component: "div",
|
|
30
|
+
tabIndex: 0,
|
|
31
|
+
"aria-label": t("notebooks.card.openAria", { name: notebook.name }),
|
|
32
|
+
onClick: () => onClick(notebook),
|
|
33
|
+
onKeyDown: handleCardKeyDown,
|
|
34
|
+
children: [
|
|
35
|
+
/* @__PURE__ */ jsx(
|
|
36
|
+
CardHeader,
|
|
37
|
+
{
|
|
38
|
+
className: classes.notebookCardHeader,
|
|
39
|
+
actions: {
|
|
40
|
+
actions: /* @__PURE__ */ jsx(
|
|
41
|
+
Dropdown,
|
|
42
|
+
{
|
|
43
|
+
className: classes.notebookDropdownMenu,
|
|
44
|
+
isOpen: isMenuOpen,
|
|
45
|
+
popperProps: {
|
|
46
|
+
position: "end",
|
|
47
|
+
preventOverflow: true
|
|
48
|
+
},
|
|
49
|
+
onOpenChange: (isOpen) => setOpenNotebookMenuId(isOpen ? notebook.session_id : null),
|
|
50
|
+
toggle: (toggleRef) => /* @__PURE__ */ jsx(
|
|
51
|
+
MenuToggle,
|
|
60
52
|
{
|
|
61
|
-
|
|
53
|
+
ref: toggleRef,
|
|
54
|
+
variant: "plain",
|
|
55
|
+
className: classes.notebookMenuButton,
|
|
56
|
+
"aria-label": t("aria.options.label"),
|
|
57
|
+
isExpanded: isMenuOpen,
|
|
62
58
|
onClick: (event) => {
|
|
63
59
|
event.stopPropagation();
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
setOpenNotebookMenuId(
|
|
61
|
+
(current) => current === notebook.session_id ? null : notebook.session_id
|
|
62
|
+
);
|
|
66
63
|
},
|
|
67
|
-
children:
|
|
64
|
+
children: /* @__PURE__ */ jsx(EllipsisVIcon, {})
|
|
68
65
|
}
|
|
69
66
|
),
|
|
70
|
-
/* @__PURE__ */
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
event
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
67
|
+
children: /* @__PURE__ */ jsxs(DropdownList, { className: classes.notebookDropdownList, children: [
|
|
68
|
+
/* @__PURE__ */ jsx(
|
|
69
|
+
DropdownItem,
|
|
70
|
+
{
|
|
71
|
+
className: classes.notebookDropdownItem,
|
|
72
|
+
onClick: (event) => {
|
|
73
|
+
event.stopPropagation();
|
|
74
|
+
onRename(notebook.session_id);
|
|
75
|
+
setOpenNotebookMenuId(null);
|
|
76
|
+
},
|
|
77
|
+
children: t("notebooks.actions.rename")
|
|
78
|
+
}
|
|
79
|
+
),
|
|
80
|
+
/* @__PURE__ */ jsx(
|
|
81
|
+
DropdownItem,
|
|
82
|
+
{
|
|
83
|
+
className: classes.notebookDropdownItem,
|
|
84
|
+
onClick: (event) => {
|
|
85
|
+
event.stopPropagation();
|
|
86
|
+
onDelete(notebook.session_id);
|
|
87
|
+
setOpenNotebookMenuId(null);
|
|
88
|
+
},
|
|
89
|
+
children: t("notebooks.actions.delete")
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
] })
|
|
93
|
+
}
|
|
94
|
+
),
|
|
95
|
+
className: classes.notebookCardHeaderActions
|
|
96
|
+
},
|
|
97
|
+
children: /* @__PURE__ */ jsxs(CardTitle, { className: classes.notebookTitle, children: [
|
|
98
|
+
/* @__PURE__ */ jsx(CatalogIcon, {}),
|
|
99
|
+
/* @__PURE__ */ jsx(Typography, { component: "span", className: classes.notebookTitleText, children: notebook.name })
|
|
100
|
+
] })
|
|
101
|
+
}
|
|
102
|
+
),
|
|
103
|
+
/* @__PURE__ */ jsx("div", { className: classes.notebookCardDivider }),
|
|
104
|
+
/* @__PURE__ */ jsx(CardBody, { className: classes.notebookCardBody, children: /* @__PURE__ */ jsxs("div", { children: [
|
|
105
|
+
/* @__PURE__ */ jsx("div", { className: classes.notebookDocuments, children: /* @__PURE__ */ jsxs(Typography, { variant: "body2", children: [
|
|
106
|
+
notebook.document_count ?? 0,
|
|
107
|
+
" ",
|
|
108
|
+
t("notebooks.documents")
|
|
109
|
+
] }) }),
|
|
110
|
+
/* @__PURE__ */ jsx("div", { className: classes.notebookUpdated, children: /* @__PURE__ */ jsx(Typography, { variant: "caption", children: formatUpdatedLabel(notebook.updated_at, t) }) })
|
|
111
|
+
] }) })
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
);
|
|
115
|
+
};
|
|
105
116
|
|
|
106
117
|
export { NotebookCard };
|
|
107
118
|
//# sourceMappingURL=NotebookCard.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotebookCard.esm.js","sources":["../../../src/components/notebooks/NotebookCard.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 type { TranslationFunction } from '@backstage/core-plugin-api/alpha';\n\nimport Typography from '@mui/material/Typography';\nimport {\n Card,\n CardBody,\n CardHeader,\n CardTitle,\n Dropdown,\n DropdownItem,\n DropdownList,\n MenuToggle,\n} from '@patternfly/react-core';\nimport { EllipsisVIcon } from '@patternfly/react-icons';\nimport { CatalogIcon } from '@patternfly/react-icons/dist/esm/icons';\n\nimport { lightspeedTranslationRef } from '../../translations/ref';\nimport { NotebookSession } from '../../types';\nimport { formatUpdatedLabel } from '../../utils/notebooks-utils';\n\ntype NotebookCardProps = {\n notebook: NotebookSession;\n classes: Record<string, string>;\n openNotebookMenuId: string | null;\n setOpenNotebookMenuId: React.Dispatch<React.SetStateAction<string | null>>;\n onClick: (notebook: NotebookSession) => void;\n onRename: (sessionId: string) => void;\n onDelete: (sessionId: string) => void;\n t: TranslationFunction<typeof lightspeedTranslationRef.T>;\n};\n\nexport const NotebookCard = ({\n notebook,\n classes,\n openNotebookMenuId,\n setOpenNotebookMenuId,\n onClick,\n onRename,\n onDelete,\n t,\n}: NotebookCardProps) => (\n <Card\n
|
|
1
|
+
{"version":3,"file":"NotebookCard.esm.js","sources":["../../../src/components/notebooks/NotebookCard.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 type { TranslationFunction } from '@backstage/core-plugin-api/alpha';\n\nimport Typography from '@mui/material/Typography';\nimport {\n Card,\n CardBody,\n CardHeader,\n CardTitle,\n Dropdown,\n DropdownItem,\n DropdownList,\n MenuToggle,\n} from '@patternfly/react-core';\nimport { EllipsisVIcon } from '@patternfly/react-icons';\nimport { CatalogIcon } from '@patternfly/react-icons/dist/esm/icons';\n\nimport { lightspeedTranslationRef } from '../../translations/ref';\nimport { NotebookSession } from '../../types';\nimport { formatUpdatedLabel } from '../../utils/notebooks-utils';\n\ntype NotebookCardProps = {\n notebook: NotebookSession;\n classes: Record<string, string>;\n openNotebookMenuId: string | null;\n setOpenNotebookMenuId: React.Dispatch<React.SetStateAction<string | null>>;\n onClick: (notebook: NotebookSession) => void;\n onRename: (sessionId: string) => void;\n onDelete: (sessionId: string) => void;\n t: TranslationFunction<typeof lightspeedTranslationRef.T>;\n};\n\nexport const NotebookCard = ({\n notebook,\n classes,\n openNotebookMenuId,\n setOpenNotebookMenuId,\n onClick,\n onRename,\n onDelete,\n t,\n}: NotebookCardProps) => {\n const isMenuOpen = openNotebookMenuId === notebook.session_id;\n\n const handleCardKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick(notebook);\n }\n };\n\n return (\n <Card\n className={classes.notebookCard}\n component=\"div\"\n tabIndex={0}\n aria-label={t('notebooks.card.openAria' as any, { name: notebook.name })}\n onClick={() => onClick(notebook)}\n onKeyDown={handleCardKeyDown}\n >\n <CardHeader\n className={classes.notebookCardHeader}\n actions={{\n actions: (\n <Dropdown\n className={classes.notebookDropdownMenu}\n isOpen={isMenuOpen}\n popperProps={{\n position: 'end',\n preventOverflow: true,\n }}\n onOpenChange={isOpen =>\n setOpenNotebookMenuId(isOpen ? notebook.session_id : null)\n }\n toggle={toggleRef => (\n <MenuToggle\n ref={toggleRef}\n variant=\"plain\"\n className={classes.notebookMenuButton}\n aria-label={t('aria.options.label')}\n isExpanded={isMenuOpen}\n onClick={event => {\n event.stopPropagation();\n setOpenNotebookMenuId(current =>\n current === notebook.session_id\n ? null\n : notebook.session_id,\n );\n }}\n >\n <EllipsisVIcon />\n </MenuToggle>\n )}\n >\n <DropdownList className={classes.notebookDropdownList}>\n <DropdownItem\n className={classes.notebookDropdownItem}\n onClick={event => {\n event.stopPropagation();\n onRename(notebook.session_id);\n setOpenNotebookMenuId(null);\n }}\n >\n {t('notebooks.actions.rename')}\n </DropdownItem>\n <DropdownItem\n className={classes.notebookDropdownItem}\n onClick={event => {\n event.stopPropagation();\n onDelete(notebook.session_id);\n setOpenNotebookMenuId(null);\n }}\n >\n {t('notebooks.actions.delete')}\n </DropdownItem>\n </DropdownList>\n </Dropdown>\n ),\n className: classes.notebookCardHeaderActions,\n }}\n >\n <CardTitle className={classes.notebookTitle}>\n <CatalogIcon />\n <Typography component=\"span\" className={classes.notebookTitleText}>\n {notebook.name}\n </Typography>\n </CardTitle>\n </CardHeader>\n <div className={classes.notebookCardDivider} />\n <CardBody className={classes.notebookCardBody}>\n <div>\n <div className={classes.notebookDocuments}>\n <Typography variant=\"body2\">\n {notebook.document_count ?? 0} {t('notebooks.documents')}\n </Typography>\n </div>\n <div className={classes.notebookUpdated}>\n <Typography variant=\"caption\">\n {formatUpdatedLabel(notebook.updated_at, t)}\n </Typography>\n </div>\n </div>\n </CardBody>\n </Card>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { useState, useCallback, useEffect, useRef } from 'react';
|
|
3
3
|
import { useApi } from '@backstage/core-plugin-api';
|
|
4
|
-
import {
|
|
4
|
+
import { Typography, makeStyles } from '@material-ui/core';
|
|
5
5
|
import { ChatbotFooter, MessageBar, ChatbotFootnote, ChatbotContent, ChatbotWelcomePrompt } from '@patternfly/chatbot';
|
|
6
6
|
import { DrawerPanelContent, AlertGroup, Alert, AlertVariant, AlertActionCloseButton, Drawer, DrawerContent, DrawerContentBody, Tooltip, Button } from '@patternfly/react-core';
|
|
7
7
|
import { TimesIcon } from '@patternfly/react-icons';
|
|
@@ -67,7 +67,7 @@ const useStyles = makeStyles((theme) => ({
|
|
|
67
67
|
minHeight: 0
|
|
68
68
|
},
|
|
69
69
|
drawerContentBody: {
|
|
70
|
-
backgroundColor: "var(--pf-t--global--background--color--
|
|
70
|
+
backgroundColor: "var(--pf-t--global--background--color--primary--default)",
|
|
71
71
|
height: "100%"
|
|
72
72
|
},
|
|
73
73
|
contentColumn: {
|
|
@@ -100,7 +100,15 @@ const useStyles = makeStyles((theme) => ({
|
|
|
100
100
|
flexDirection: "column",
|
|
101
101
|
flex: 1,
|
|
102
102
|
minHeight: 0,
|
|
103
|
-
overflow: "auto"
|
|
103
|
+
overflow: "auto",
|
|
104
|
+
backgroundColor: "var(--pf-t--global--background--color--floating--default)"
|
|
105
|
+
},
|
|
106
|
+
notebookEmptyUpload: {
|
|
107
|
+
flex: 1,
|
|
108
|
+
display: "flex",
|
|
109
|
+
flexDirection: "column",
|
|
110
|
+
minHeight: 0,
|
|
111
|
+
backgroundColor: "var(--pf-t--global--background--color--floating--default)"
|
|
104
112
|
},
|
|
105
113
|
notebookContentArea: {
|
|
106
114
|
width: "95%",
|
|
@@ -132,9 +140,13 @@ const useStyles = makeStyles((theme) => ({
|
|
|
132
140
|
padding: `0 0 ${theme.spacing(1)}px`
|
|
133
141
|
},
|
|
134
142
|
footer: {
|
|
143
|
+
backgroundColor: theme.palette.background.paper,
|
|
135
144
|
"&>.pf-chatbot__footer-container": {
|
|
136
145
|
width: "95% !important",
|
|
137
146
|
maxWidth: "unset !important"
|
|
147
|
+
},
|
|
148
|
+
"& .pf-chatbot__message-bar": {
|
|
149
|
+
backgroundColor: theme.palette.grey[300]
|
|
138
150
|
}
|
|
139
151
|
},
|
|
140
152
|
chatContent: {
|
|
@@ -385,7 +397,7 @@ const NotebookView = ({
|
|
|
385
397
|
);
|
|
386
398
|
const renderMainContent = () => {
|
|
387
399
|
if (!hasDocuments && messages.length === 0) {
|
|
388
|
-
return /* @__PURE__ */ jsx(UploadResourceScreen, { onUploadClick: handleOpenUploadModal });
|
|
400
|
+
return /* @__PURE__ */ jsx(Typography, { component: "span", className: classes.notebookEmptyUpload, children: /* @__PURE__ */ jsx(UploadResourceScreen, { onUploadClick: handleOpenUploadModal }) });
|
|
389
401
|
}
|
|
390
402
|
if (messages.length > 0) {
|
|
391
403
|
return /* @__PURE__ */ jsx(ChatbotContent, { className: classes.chatContent, children: /* @__PURE__ */ jsx(
|
|
@@ -483,7 +495,7 @@ const NotebookView = ({
|
|
|
483
495
|
{
|
|
484
496
|
content: isAddDisabled ? t("notebook.view.documents.maxReached") : t("notebook.view.documents.add"),
|
|
485
497
|
position: "right",
|
|
486
|
-
children: /* @__PURE__ */ jsx("span",
|
|
498
|
+
children: /* @__PURE__ */ jsx(Typography, { component: "span", children: /* @__PURE__ */ jsx(
|
|
487
499
|
Button,
|
|
488
500
|
{
|
|
489
501
|
variant: "plain",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotebookView.esm.js","sources":["../../../src/components/notebooks/NotebookView.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 { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useApi } from '@backstage/core-plugin-api';\n\nimport { makeStyles, Typography } from '@material-ui/core';\nimport {\n ChatbotContent,\n ChatbotFooter,\n ChatbotFootnote,\n ChatbotWelcomePrompt,\n MessageBar,\n MessageProps,\n} from '@patternfly/chatbot';\nimport {\n Alert,\n AlertActionCloseButton,\n AlertGroup,\n AlertVariant,\n Button,\n Drawer,\n DrawerContent,\n DrawerContentBody,\n DrawerPanelContent,\n Tooltip,\n type AlertProps,\n} from '@patternfly/react-core';\nimport { TimesIcon } from '@patternfly/react-icons';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport { notebooksApiRef } from '../../api/notebooksApi';\nimport {\n NOTEBOOK_MAX_FILES,\n TEMP_CONVERSATION_ID,\n UNTITLED_NOTEBOOK_NAME,\n} from '../../const';\nimport { useCreateNotebookMessage } from '../../hooks/notebooks/useCreateNotebookMessage';\nimport {\n useDocumentStatusPolling,\n type PendingUpload,\n} from '../../hooks/notebooks/useDocumentStatusPolling';\nimport { useConversationMessages } from '../../hooks/useConversationMessages';\nimport { CreateMessageVariables } from '../../hooks/useCreateCoversationMessage';\nimport { useTranslation } from '../../hooks/useTranslation';\nimport { useWelcomePrompts } from '../../hooks/useWelcomePrompts';\nimport { NotebookSessionMetadata, SessionDocument } from '../../types';\nimport { LightspeedChatBox } from '../LightspeedChatBox';\nimport { AddDocumentModal } from './AddDocumentModal';\nimport { DocumentSidebar } from './DocumentSidebar';\nimport { OverwriteConfirmModal } from './OverwriteConfirmModal';\nimport { AddCircleFilledIcon, SidebarExpandIcon } from './SidebarCollapseIcon';\nimport { UploadResourceScreen } from './UploadResourceScreen';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minHeight: 0,\n height: '100%',\n backgroundColor: 'var(--pf-t--global--background--color--primary--default)',\n },\n drawerContainer: {\n flex: 1,\n minHeight: 0,\n },\n expandStrip: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: theme.spacing(1.5),\n gap: theme.spacing(1),\n borderRight: '1px solid var(--pf-t--global--border--color--default)',\n },\n addIconButton: {\n padding: 0,\n minWidth: 0,\n lineHeight: 1,\n },\n mainArea: {\n display: 'flex',\n flexDirection: 'row',\n height: '100%',\n minWidth: 0,\n },\n topBar: {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: `${theme.spacing(1.5)}px ${theme.spacing(2)}px`,\n },\n closeButton: {\n textTransform: 'none',\n },\n mainContent: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minHeight: 0,\n },\n drawerContentBody: {\n backgroundColor:\n 'var(--pf-t--global--background--color--secondary--default)',\n height: '100%',\n },\n contentColumn: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minWidth: 0,\n minHeight: 0,\n overflow: 'hidden',\n },\n alertContainer: {\n width: '95%',\n maxWidth: 'unset',\n margin: '0 auto',\n padding: `0 0 ${theme.spacing(1)}px`,\n },\n toastAlertGroup: {\n '--pf-v6-c-alert-group--m-toast--InsetInlineEnd': `${theme.spacing(2.5)}px`,\n '--pf-v6-c-alert-group--m-toast--InsetBlockStart': `${theme.spacing(2.5)}px`,\n '--pf-v6-c-alert-group--m-toast--MaxWidth': '350px',\n },\n toastAlert: {\n maxWidth: '350px',\n '& .pf-v6-c-alert__title': {\n margin: 0,\n },\n },\n welcomeContainer: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minHeight: 0,\n overflow: 'auto',\n },\n notebookContentArea: {\n width: '95%',\n maxWidth: 'unset',\n margin: `${theme.spacing(3)}px auto 0 auto`,\n padding: 0,\n },\n notebookHeading: {\n fontSize: '2rem',\n fontWeight: 500,\n lineHeight: 1.25,\n padding: `${theme.spacing(1)}px 0`,\n },\n notebookSummary: {\n fontSize: '1rem',\n lineHeight: 2,\n color: 'var(--pf-t--global--text--color--regular)',\n paddingTop: theme.spacing(0.5),\n },\n promptSuggestions: {\n width: '95%',\n maxWidth: 'unset',\n margin: '0 auto',\n },\n footerAlignedAlert: {\n maxWidth: 'unset',\n width: '95%',\n margin: '0 auto',\n padding: `0 0 ${theme.spacing(1)}px`,\n },\n footer: {\n '&>.pf-chatbot__footer-container': {\n width: '95% !important',\n maxWidth: 'unset !important',\n },\n },\n chatContent: {\n minHeight: 0,\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflow: 'auto',\n },\n}));\n\ntype NotebookViewProps = {\n sessionId: string;\n notebookName?: string;\n documents?: SessionDocument[];\n metadata?: NotebookSessionMetadata;\n topicSummary?: string;\n userName?: string;\n avatar?: string;\n profileLoading: boolean;\n topicRestrictionEnabled: boolean;\n selectedModel: string;\n onClose: () => void;\n};\n\nexport const NotebookView = ({\n sessionId,\n notebookName = UNTITLED_NOTEBOOK_NAME,\n documents = [],\n metadata,\n topicSummary,\n userName,\n avatar,\n profileLoading,\n topicRestrictionEnabled,\n selectedModel,\n onClose,\n}: NotebookViewProps) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const queryClient = useQueryClient();\n const notebooksApi = useApi(notebooksApiRef);\n const { mutateAsync: notebookCreateMessage } = useCreateNotebookMessage();\n\n const [conversationId, setConversationId] = useState(\n metadata?.conversation_id ?? TEMP_CONVERSATION_ID,\n );\n const [isSendButtonDisabled, setIsSendButtonDisabled] = useState(false);\n const [announcement, setAnnouncement] = useState<string | undefined>(\n undefined,\n );\n const [deletingDocumentIds, setDeletingDocumentIds] = useState<Set<string>>(\n new Set(),\n );\n\n const handleDeleteDocument = useCallback(\n async (documentId: string) => {\n setDeletingDocumentIds(prev => new Set(prev).add(documentId));\n try {\n await notebooksApi.deleteDocument(sessionId, documentId);\n queryClient.invalidateQueries({\n queryKey: ['notebooks', 'documents', sessionId],\n });\n } finally {\n setDeletingDocumentIds(prev => {\n const next = new Set(prev);\n next.delete(documentId);\n return next;\n });\n }\n },\n [notebooksApi, sessionId, queryClient],\n );\n\n const onComplete = useCallback(\n (message: string) => {\n setIsSendButtonDisabled(false);\n setAnnouncement(`Message from Bot: ${message}`);\n queryClient.invalidateQueries({\n queryKey: ['conversationMessages', conversationId],\n });\n },\n [queryClient, conversationId],\n );\n\n const onStart = useCallback((conv_id: string) => {\n setConversationId(conv_id);\n }, []);\n\n const createMessageAdapter = useCallback(\n async (vars: CreateMessageVariables) => {\n return notebookCreateMessage({\n prompt: vars.prompt,\n sessionId,\n });\n },\n [notebookCreateMessage, sessionId],\n );\n\n const { conversationMessages, handleInputPrompt, scrollToBottomRef } =\n useConversationMessages(\n conversationId,\n userName,\n selectedModel,\n '',\n avatar,\n onComplete,\n onStart,\n createMessageAdapter,\n );\n\n const [messages, setMessages] =\n useState<MessageProps[]>(conversationMessages);\n\n useEffect(() => {\n setMessages(conversationMessages);\n }, [conversationMessages]);\n\n const sendMessage = useCallback(\n (message: string | number) => {\n setAnnouncement(\n t('conversation.announcement.userMessage' as any, {\n prompt: message.toString(),\n }),\n );\n handleInputPrompt(message.toString(), []);\n setIsSendButtonDisabled(true);\n },\n [handleInputPrompt, t],\n );\n\n const samplePrompts = useWelcomePrompts();\n const welcomePrompts =\n samplePrompts?.map(prompt => {\n const p = prompt as { title: string; message: string };\n return {\n title: p.title,\n message: p.message,\n onClick: () => sendMessage(p.message),\n };\n }) ?? [];\n\n const [sidebarCollapsed, setSidebarCollapsed] = useState(false);\n const [isUploadModalOpen, setIsUploadModalOpen] = useState(false);\n const [uploadingFileNames, setUploadingFileNames] = useState<string[]>([]);\n const [pendingUploads, setPendingUploads] = useState<PendingUpload[]>([]);\n const [toastAlerts, setToastAlerts] = useState<Partial<AlertProps>[]>([]);\n const processedIds = useRef<Set<string>>(new Set());\n const [completedFileNames, setCompletedFileNames] = useState<Set<string>>(\n new Set(),\n );\n const [filesToOverwrite, setFilesToOverwrite] = useState<File[]>([]);\n const [isOverwriteModalOpen, setIsOverwriteModalOpen] = useState(false);\n const [filesToAddToModal, setFilesToAddToModal] = useState<File[]>([]);\n\n const handleOpenUploadModal = () => setIsUploadModalOpen(true);\n const handleCloseUploadModal = () => setIsUploadModalOpen(false);\n\n const handleFilesUploading = (files: File[]) => {\n setUploadingFileNames(prev => {\n const newNames = files\n .map(f => f.name)\n .filter(name => !prev.includes(name));\n return [...prev, ...newNames];\n });\n };\n\n const handleUploadStarted = (info: {\n fileName: string;\n documentId: string;\n }) => {\n processedIds.current.delete(info.documentId);\n setPendingUploads(prev => [\n ...prev,\n { fileName: info.fileName, documentId: info.documentId },\n ]);\n };\n\n const handleUploadFailed = (fileName: string) => {\n setUploadingFileNames(prev => prev.filter(n => n !== fileName));\n setToastAlerts(prev => [\n {\n key: Date.now() + fileName,\n title: (t as Function)('notebook.upload.failed', {\n fileName,\n }) as string,\n variant: 'danger',\n },\n ...prev,\n ]);\n };\n\n const handleDuplicatesFound = (files: File[]) => {\n setFilesToOverwrite(files);\n setIsOverwriteModalOpen(true);\n };\n\n const handleOverwriteConfirm = () => {\n const files = filesToOverwrite;\n setIsOverwriteModalOpen(false);\n setFilesToOverwrite([]);\n\n if (files.length === 0) return;\n\n setFilesToAddToModal(files);\n };\n\n const handleFilesAddedToModal = () => {\n setFilesToAddToModal([]);\n };\n\n const handleOverwriteCancel = () => {\n setIsOverwriteModalOpen(false);\n setFilesToOverwrite([]);\n };\n\n const pollingResults = useDocumentStatusPolling(sessionId, pendingUploads);\n\n useEffect(() => {\n const completedOrFailed = pollingResults.filter(\n r =>\n (r.status === 'completed' ||\n r.status === 'failed' ||\n r.status === 'cancelled') &&\n !processedIds.current.has(r.documentId),\n );\n\n if (completedOrFailed.length === 0) return;\n\n const idsToRemove = new Set<string>();\n const namesToRemove = new Set<string>();\n const newAlerts: Partial<AlertProps>[] = [];\n\n const newCompletedNames = new Set<string>();\n\n for (const result of completedOrFailed) {\n processedIds.current.add(result.documentId);\n idsToRemove.add(result.documentId);\n namesToRemove.add(result.fileName);\n if (result.status === 'completed') {\n newCompletedNames.add(result.fileName);\n }\n\n if (result.status === 'completed') {\n newAlerts.push({\n key: Date.now() + result.documentId,\n title: (t as Function)('notebook.upload.success', {\n fileName: result.fileName,\n }) as string,\n variant: 'success',\n });\n } else {\n newAlerts.push({\n key: Date.now() + result.documentId,\n title: (t as Function)('notebook.upload.failed', {\n fileName: result.fileName,\n }) as string,\n variant: 'danger',\n });\n }\n }\n\n setPendingUploads(prev => prev.filter(u => !idsToRemove.has(u.documentId)));\n setUploadingFileNames(prev =>\n prev.filter(name => !namesToRemove.has(name)),\n );\n if (newCompletedNames.size > 0) {\n setCompletedFileNames(prev => new Set([...prev, ...newCompletedNames]));\n queryClient.invalidateQueries({\n queryKey: ['notebooks', 'documents', sessionId],\n });\n }\n setToastAlerts(prev => [...newAlerts, ...prev]);\n }, [pollingResults, t, queryClient, sessionId]);\n\n const handleRemoveToastAlert = (key: React.Key) => {\n setToastAlerts(prev => prev.filter(a => a.key !== key));\n };\n\n const hasDocuments = documents.length > 0 || uploadingFileNames.length > 0;\n const totalDocumentCount = documents.length + uploadingFileNames.length;\n const isAddDisabled = totalDocumentCount >= NOTEBOOK_MAX_FILES;\n\n const panelContent = (\n <DrawerPanelContent\n isResizable\n defaultSize=\"310px\"\n minSize=\"232px\"\n maxSize=\"50%\"\n resizeAriaLabel={t('notebook.view.sidebar.resize')}\n >\n <DocumentSidebar\n notebookName={notebookName}\n documents={documents}\n uploadingFileNames={uploadingFileNames}\n completedFileNames={completedFileNames}\n deletingDocumentIds={deletingDocumentIds}\n collapsed={sidebarCollapsed}\n onToggleCollapse={() => setSidebarCollapsed(prev => !prev)}\n onAddDocument={handleOpenUploadModal}\n onDeleteDocument={handleDeleteDocument}\n />\n </DrawerPanelContent>\n );\n\n const renderMainContent = () => {\n if (!hasDocuments && messages.length === 0) {\n return <UploadResourceScreen onUploadClick={handleOpenUploadModal} />;\n }\n if (messages.length > 0) {\n return (\n <ChatbotContent className={classes.chatContent}>\n <LightspeedChatBox\n userName={userName}\n messages={messages}\n profileLoading={profileLoading}\n announcement={announcement}\n ref={scrollToBottomRef}\n welcomePrompts={[]}\n conversationId={conversationId}\n isStreaming={isSendButtonDisabled}\n topicRestrictionEnabled={topicRestrictionEnabled}\n />\n </ChatbotContent>\n );\n }\n return (\n <div className={classes.welcomeContainer}>\n <div className={classes.alertContainer}>\n <Alert isInline variant=\"info\" title={t('aria.important')}>\n {t('disclaimer.withoutValidation')}\n </Alert>\n </div>\n <div className={classes.notebookContentArea}>\n <Typography className={classes.notebookHeading}>\n {notebookName}\n </Typography>\n {topicSummary && (\n <Typography className={classes.notebookSummary}>\n {topicSummary}\n </Typography>\n )}\n </div>\n {welcomePrompts.length > 0 && (\n <div className={classes.promptSuggestions}>\n <ChatbotWelcomePrompt\n title=\"\"\n description=\"\"\n prompts={welcomePrompts}\n />\n </div>\n )}\n </div>\n );\n };\n\n return (\n <div className={classes.root}>\n {toastAlerts.length > 0 && (\n <AlertGroup\n hasAnimations\n isToast\n isLiveRegion\n className={classes.toastAlertGroup}\n >\n {toastAlerts.map(({ key, title, variant }) => (\n <Alert\n key={key}\n variant={AlertVariant[variant ?? 'success']}\n title={title}\n className={classes.toastAlert}\n timeout={2000}\n onTimeout={() => handleRemoveToastAlert(key as React.Key)}\n actionClose={\n <AlertActionCloseButton\n title={title as string}\n variantLabel={`${variant ?? 'success'} alert`}\n onClose={() => handleRemoveToastAlert(key as React.Key)}\n />\n }\n />\n ))}\n </AlertGroup>\n )}\n <Drawer\n isExpanded={!sidebarCollapsed}\n isInline\n position=\"start\"\n className={classes.drawerContainer}\n >\n <DrawerContent\n panelContent={!sidebarCollapsed ? panelContent : undefined}\n >\n <DrawerContentBody className={classes.drawerContentBody}>\n <div className={classes.mainArea}>\n {sidebarCollapsed && (\n <div className={classes.expandStrip}>\n <Tooltip\n content={t('notebook.view.sidebar.expand')}\n position=\"right\"\n >\n <Button\n variant=\"plain\"\n onClick={() => setSidebarCollapsed(false)}\n aria-label={t('notebook.view.sidebar.expand')}\n size=\"sm\"\n >\n <SidebarExpandIcon />\n </Button>\n </Tooltip>\n <Tooltip\n content={\n isAddDisabled\n ? t('notebook.view.documents.maxReached')\n : t('notebook.view.documents.add')\n }\n position=\"right\"\n >\n <span>\n <Button\n variant=\"plain\"\n className={classes.addIconButton}\n onClick={\n isAddDisabled ? undefined : handleOpenUploadModal\n }\n aria-label={t('notebook.view.documents.add')}\n isDisabled={isAddDisabled}\n >\n <AddCircleFilledIcon disabled={isAddDisabled} />\n </Button>\n </span>\n </Tooltip>\n </div>\n )}\n\n <div className={classes.contentColumn}>\n <div className={classes.topBar}>\n <Button\n variant=\"link\"\n className={classes.closeButton}\n onClick={onClose}\n icon={<TimesIcon />}\n iconPosition=\"end\"\n >\n {t('notebook.view.close')}\n </Button>\n </div>\n\n <div className={classes.mainContent}>{renderMainContent()}</div>\n\n {!hasDocuments && messages.length === 0 && (\n <div className={classes.footerAlignedAlert}>\n <Alert isInline variant=\"info\" title={t('aria.important')}>\n {t('disclaimer.withoutValidation')}\n </Alert>\n </div>\n )}\n\n <ChatbotFooter className={classes.footer}>\n {documents.length === 0 ? (\n <Tooltip\n content={t('notebook.view.input.disabledTooltip')}\n position=\"top\"\n >\n <div>\n <MessageBar\n hasAttachButton={false}\n hasMicrophoneButton={false}\n hasStopButton={false}\n isSendButtonDisabled\n isDisabled\n onSendMessage={sendMessage}\n placeholder={t('notebook.view.input.placeholder')}\n />\n </div>\n </Tooltip>\n ) : (\n <MessageBar\n hasAttachButton={false}\n hasMicrophoneButton\n hasStopButton={false}\n isSendButtonDisabled={isSendButtonDisabled}\n onSendMessage={sendMessage}\n placeholder={t('notebook.view.input.placeholder')}\n />\n )}\n <ChatbotFootnote label={t('footer.accuracy.label')} />\n </ChatbotFooter>\n </div>\n </div>\n </DrawerContentBody>\n </DrawerContent>\n </Drawer>\n\n <AddDocumentModal\n isOpen={isUploadModalOpen}\n onClose={handleCloseUploadModal}\n sessionId={sessionId}\n existingDocumentNames={documents.map(d => d.title)}\n onFilesUploading={handleFilesUploading}\n onUploadStarted={handleUploadStarted}\n onUploadFailed={handleUploadFailed}\n onDuplicatesFound={handleDuplicatesFound}\n filesToAdd={filesToAddToModal}\n onFilesAdded={handleFilesAddedToModal}\n />\n\n <OverwriteConfirmModal\n isOpen={isOverwriteModalOpen}\n onClose={handleOverwriteCancel}\n onConfirm={handleOverwriteConfirm}\n fileNames={filesToOverwrite.map(f => f.name)}\n />\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NotebookView.esm.js","sources":["../../../src/components/notebooks/NotebookView.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 { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useApi } from '@backstage/core-plugin-api';\n\nimport { makeStyles, Typography } from '@material-ui/core';\nimport {\n ChatbotContent,\n ChatbotFooter,\n ChatbotFootnote,\n ChatbotWelcomePrompt,\n MessageBar,\n MessageProps,\n} from '@patternfly/chatbot';\nimport {\n Alert,\n AlertActionCloseButton,\n AlertGroup,\n AlertVariant,\n Button,\n Drawer,\n DrawerContent,\n DrawerContentBody,\n DrawerPanelContent,\n Tooltip,\n type AlertProps,\n} from '@patternfly/react-core';\nimport { TimesIcon } from '@patternfly/react-icons';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport { notebooksApiRef } from '../../api/notebooksApi';\nimport {\n NOTEBOOK_MAX_FILES,\n TEMP_CONVERSATION_ID,\n UNTITLED_NOTEBOOK_NAME,\n} from '../../const';\nimport { useCreateNotebookMessage } from '../../hooks/notebooks/useCreateNotebookMessage';\nimport {\n useDocumentStatusPolling,\n type PendingUpload,\n} from '../../hooks/notebooks/useDocumentStatusPolling';\nimport { useConversationMessages } from '../../hooks/useConversationMessages';\nimport { CreateMessageVariables } from '../../hooks/useCreateCoversationMessage';\nimport { useTranslation } from '../../hooks/useTranslation';\nimport { useWelcomePrompts } from '../../hooks/useWelcomePrompts';\nimport { NotebookSessionMetadata, SessionDocument } from '../../types';\nimport { LightspeedChatBox } from '../LightspeedChatBox';\nimport { AddDocumentModal } from './AddDocumentModal';\nimport { DocumentSidebar } from './DocumentSidebar';\nimport { OverwriteConfirmModal } from './OverwriteConfirmModal';\nimport { AddCircleFilledIcon, SidebarExpandIcon } from './SidebarCollapseIcon';\nimport { UploadResourceScreen } from './UploadResourceScreen';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minHeight: 0,\n height: '100%',\n backgroundColor: 'var(--pf-t--global--background--color--primary--default)',\n },\n drawerContainer: {\n flex: 1,\n minHeight: 0,\n },\n expandStrip: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: theme.spacing(1.5),\n gap: theme.spacing(1),\n borderRight: '1px solid var(--pf-t--global--border--color--default)',\n },\n addIconButton: {\n padding: 0,\n minWidth: 0,\n lineHeight: 1,\n },\n mainArea: {\n display: 'flex',\n flexDirection: 'row',\n height: '100%',\n minWidth: 0,\n },\n topBar: {\n display: 'flex',\n justifyContent: 'flex-end',\n padding: `${theme.spacing(1.5)}px ${theme.spacing(2)}px`,\n },\n closeButton: {\n textTransform: 'none',\n },\n mainContent: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minHeight: 0,\n },\n drawerContentBody: {\n backgroundColor: 'var(--pf-t--global--background--color--primary--default)',\n height: '100%',\n },\n contentColumn: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minWidth: 0,\n minHeight: 0,\n overflow: 'hidden',\n },\n alertContainer: {\n width: '95%',\n maxWidth: 'unset',\n margin: '0 auto',\n padding: `0 0 ${theme.spacing(1)}px`,\n },\n toastAlertGroup: {\n '--pf-v6-c-alert-group--m-toast--InsetInlineEnd': `${theme.spacing(2.5)}px`,\n '--pf-v6-c-alert-group--m-toast--InsetBlockStart': `${theme.spacing(2.5)}px`,\n '--pf-v6-c-alert-group--m-toast--MaxWidth': '350px',\n },\n toastAlert: {\n maxWidth: '350px',\n '& .pf-v6-c-alert__title': {\n margin: 0,\n },\n },\n welcomeContainer: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minHeight: 0,\n overflow: 'auto',\n backgroundColor:\n 'var(--pf-t--global--background--color--floating--default)',\n },\n notebookEmptyUpload: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0,\n backgroundColor:\n 'var(--pf-t--global--background--color--floating--default)',\n },\n notebookContentArea: {\n width: '95%',\n maxWidth: 'unset',\n margin: `${theme.spacing(3)}px auto 0 auto`,\n padding: 0,\n },\n notebookHeading: {\n fontSize: '2rem',\n fontWeight: 500,\n lineHeight: 1.25,\n padding: `${theme.spacing(1)}px 0`,\n },\n notebookSummary: {\n fontSize: '1rem',\n lineHeight: 2,\n color: 'var(--pf-t--global--text--color--regular)',\n paddingTop: theme.spacing(0.5),\n },\n promptSuggestions: {\n width: '95%',\n maxWidth: 'unset',\n margin: '0 auto',\n },\n footerAlignedAlert: {\n maxWidth: 'unset',\n width: '95%',\n margin: '0 auto',\n padding: `0 0 ${theme.spacing(1)}px`,\n },\n footer: {\n backgroundColor: theme.palette.background.paper,\n '&>.pf-chatbot__footer-container': {\n width: '95% !important',\n maxWidth: 'unset !important',\n },\n '& .pf-chatbot__message-bar': {\n backgroundColor: theme.palette.grey[300],\n },\n },\n chatContent: {\n minHeight: 0,\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n overflow: 'auto',\n },\n}));\n\ntype NotebookViewProps = {\n sessionId: string;\n notebookName?: string;\n documents?: SessionDocument[];\n metadata?: NotebookSessionMetadata;\n topicSummary?: string;\n userName?: string;\n avatar?: string;\n profileLoading: boolean;\n topicRestrictionEnabled: boolean;\n selectedModel: string;\n onClose: () => void;\n};\n\nexport const NotebookView = ({\n sessionId,\n notebookName = UNTITLED_NOTEBOOK_NAME,\n documents = [],\n metadata,\n topicSummary,\n userName,\n avatar,\n profileLoading,\n topicRestrictionEnabled,\n selectedModel,\n onClose,\n}: NotebookViewProps) => {\n const classes = useStyles();\n const { t } = useTranslation();\n const queryClient = useQueryClient();\n const notebooksApi = useApi(notebooksApiRef);\n const { mutateAsync: notebookCreateMessage } = useCreateNotebookMessage();\n\n const [conversationId, setConversationId] = useState(\n metadata?.conversation_id ?? TEMP_CONVERSATION_ID,\n );\n const [isSendButtonDisabled, setIsSendButtonDisabled] = useState(false);\n const [announcement, setAnnouncement] = useState<string | undefined>(\n undefined,\n );\n const [deletingDocumentIds, setDeletingDocumentIds] = useState<Set<string>>(\n new Set(),\n );\n\n const handleDeleteDocument = useCallback(\n async (documentId: string) => {\n setDeletingDocumentIds(prev => new Set(prev).add(documentId));\n try {\n await notebooksApi.deleteDocument(sessionId, documentId);\n queryClient.invalidateQueries({\n queryKey: ['notebooks', 'documents', sessionId],\n });\n } finally {\n setDeletingDocumentIds(prev => {\n const next = new Set(prev);\n next.delete(documentId);\n return next;\n });\n }\n },\n [notebooksApi, sessionId, queryClient],\n );\n\n const onComplete = useCallback(\n (message: string) => {\n setIsSendButtonDisabled(false);\n setAnnouncement(`Message from Bot: ${message}`);\n queryClient.invalidateQueries({\n queryKey: ['conversationMessages', conversationId],\n });\n },\n [queryClient, conversationId],\n );\n\n const onStart = useCallback((conv_id: string) => {\n setConversationId(conv_id);\n }, []);\n\n const createMessageAdapter = useCallback(\n async (vars: CreateMessageVariables) => {\n return notebookCreateMessage({\n prompt: vars.prompt,\n sessionId,\n });\n },\n [notebookCreateMessage, sessionId],\n );\n\n const { conversationMessages, handleInputPrompt, scrollToBottomRef } =\n useConversationMessages(\n conversationId,\n userName,\n selectedModel,\n '',\n avatar,\n onComplete,\n onStart,\n createMessageAdapter,\n );\n\n const [messages, setMessages] =\n useState<MessageProps[]>(conversationMessages);\n\n useEffect(() => {\n setMessages(conversationMessages);\n }, [conversationMessages]);\n\n const sendMessage = useCallback(\n (message: string | number) => {\n setAnnouncement(\n t('conversation.announcement.userMessage' as any, {\n prompt: message.toString(),\n }),\n );\n handleInputPrompt(message.toString(), []);\n setIsSendButtonDisabled(true);\n },\n [handleInputPrompt, t],\n );\n\n const samplePrompts = useWelcomePrompts();\n const welcomePrompts =\n samplePrompts?.map(prompt => {\n const p = prompt as { title: string; message: string };\n return {\n title: p.title,\n message: p.message,\n onClick: () => sendMessage(p.message),\n };\n }) ?? [];\n\n const [sidebarCollapsed, setSidebarCollapsed] = useState(false);\n const [isUploadModalOpen, setIsUploadModalOpen] = useState(false);\n const [uploadingFileNames, setUploadingFileNames] = useState<string[]>([]);\n const [pendingUploads, setPendingUploads] = useState<PendingUpload[]>([]);\n const [toastAlerts, setToastAlerts] = useState<Partial<AlertProps>[]>([]);\n const processedIds = useRef<Set<string>>(new Set());\n const [completedFileNames, setCompletedFileNames] = useState<Set<string>>(\n new Set(),\n );\n const [filesToOverwrite, setFilesToOverwrite] = useState<File[]>([]);\n const [isOverwriteModalOpen, setIsOverwriteModalOpen] = useState(false);\n const [filesToAddToModal, setFilesToAddToModal] = useState<File[]>([]);\n\n const handleOpenUploadModal = () => setIsUploadModalOpen(true);\n const handleCloseUploadModal = () => setIsUploadModalOpen(false);\n\n const handleFilesUploading = (files: File[]) => {\n setUploadingFileNames(prev => {\n const newNames = files\n .map(f => f.name)\n .filter(name => !prev.includes(name));\n return [...prev, ...newNames];\n });\n };\n\n const handleUploadStarted = (info: {\n fileName: string;\n documentId: string;\n }) => {\n processedIds.current.delete(info.documentId);\n setPendingUploads(prev => [\n ...prev,\n { fileName: info.fileName, documentId: info.documentId },\n ]);\n };\n\n const handleUploadFailed = (fileName: string) => {\n setUploadingFileNames(prev => prev.filter(n => n !== fileName));\n setToastAlerts(prev => [\n {\n key: Date.now() + fileName,\n title: (t as Function)('notebook.upload.failed', {\n fileName,\n }) as string,\n variant: 'danger',\n },\n ...prev,\n ]);\n };\n\n const handleDuplicatesFound = (files: File[]) => {\n setFilesToOverwrite(files);\n setIsOverwriteModalOpen(true);\n };\n\n const handleOverwriteConfirm = () => {\n const files = filesToOverwrite;\n setIsOverwriteModalOpen(false);\n setFilesToOverwrite([]);\n\n if (files.length === 0) return;\n\n setFilesToAddToModal(files);\n };\n\n const handleFilesAddedToModal = () => {\n setFilesToAddToModal([]);\n };\n\n const handleOverwriteCancel = () => {\n setIsOverwriteModalOpen(false);\n setFilesToOverwrite([]);\n };\n\n const pollingResults = useDocumentStatusPolling(sessionId, pendingUploads);\n\n useEffect(() => {\n const completedOrFailed = pollingResults.filter(\n r =>\n (r.status === 'completed' ||\n r.status === 'failed' ||\n r.status === 'cancelled') &&\n !processedIds.current.has(r.documentId),\n );\n\n if (completedOrFailed.length === 0) return;\n\n const idsToRemove = new Set<string>();\n const namesToRemove = new Set<string>();\n const newAlerts: Partial<AlertProps>[] = [];\n\n const newCompletedNames = new Set<string>();\n\n for (const result of completedOrFailed) {\n processedIds.current.add(result.documentId);\n idsToRemove.add(result.documentId);\n namesToRemove.add(result.fileName);\n if (result.status === 'completed') {\n newCompletedNames.add(result.fileName);\n }\n\n if (result.status === 'completed') {\n newAlerts.push({\n key: Date.now() + result.documentId,\n title: (t as Function)('notebook.upload.success', {\n fileName: result.fileName,\n }) as string,\n variant: 'success',\n });\n } else {\n newAlerts.push({\n key: Date.now() + result.documentId,\n title: (t as Function)('notebook.upload.failed', {\n fileName: result.fileName,\n }) as string,\n variant: 'danger',\n });\n }\n }\n\n setPendingUploads(prev => prev.filter(u => !idsToRemove.has(u.documentId)));\n setUploadingFileNames(prev =>\n prev.filter(name => !namesToRemove.has(name)),\n );\n if (newCompletedNames.size > 0) {\n setCompletedFileNames(prev => new Set([...prev, ...newCompletedNames]));\n queryClient.invalidateQueries({\n queryKey: ['notebooks', 'documents', sessionId],\n });\n }\n setToastAlerts(prev => [...newAlerts, ...prev]);\n }, [pollingResults, t, queryClient, sessionId]);\n\n const handleRemoveToastAlert = (key: React.Key) => {\n setToastAlerts(prev => prev.filter(a => a.key !== key));\n };\n\n const hasDocuments = documents.length > 0 || uploadingFileNames.length > 0;\n const totalDocumentCount = documents.length + uploadingFileNames.length;\n const isAddDisabled = totalDocumentCount >= NOTEBOOK_MAX_FILES;\n\n const panelContent = (\n <DrawerPanelContent\n isResizable\n defaultSize=\"310px\"\n minSize=\"232px\"\n maxSize=\"50%\"\n resizeAriaLabel={t('notebook.view.sidebar.resize')}\n >\n <DocumentSidebar\n notebookName={notebookName}\n documents={documents}\n uploadingFileNames={uploadingFileNames}\n completedFileNames={completedFileNames}\n deletingDocumentIds={deletingDocumentIds}\n collapsed={sidebarCollapsed}\n onToggleCollapse={() => setSidebarCollapsed(prev => !prev)}\n onAddDocument={handleOpenUploadModal}\n onDeleteDocument={handleDeleteDocument}\n />\n </DrawerPanelContent>\n );\n\n const renderMainContent = () => {\n if (!hasDocuments && messages.length === 0) {\n return (\n <Typography component=\"span\" className={classes.notebookEmptyUpload}>\n <UploadResourceScreen onUploadClick={handleOpenUploadModal} />\n </Typography>\n );\n }\n if (messages.length > 0) {\n return (\n <ChatbotContent className={classes.chatContent}>\n <LightspeedChatBox\n userName={userName}\n messages={messages}\n profileLoading={profileLoading}\n announcement={announcement}\n ref={scrollToBottomRef}\n welcomePrompts={[]}\n conversationId={conversationId}\n isStreaming={isSendButtonDisabled}\n topicRestrictionEnabled={topicRestrictionEnabled}\n />\n </ChatbotContent>\n );\n }\n return (\n <div className={classes.welcomeContainer}>\n <div className={classes.alertContainer}>\n <Alert isInline variant=\"info\" title={t('aria.important')}>\n {t('disclaimer.withoutValidation')}\n </Alert>\n </div>\n <div className={classes.notebookContentArea}>\n <Typography className={classes.notebookHeading}>\n {notebookName}\n </Typography>\n {topicSummary && (\n <Typography className={classes.notebookSummary}>\n {topicSummary}\n </Typography>\n )}\n </div>\n {welcomePrompts.length > 0 && (\n <div className={classes.promptSuggestions}>\n <ChatbotWelcomePrompt\n title=\"\"\n description=\"\"\n prompts={welcomePrompts}\n />\n </div>\n )}\n </div>\n );\n };\n\n return (\n <div className={classes.root}>\n {toastAlerts.length > 0 && (\n <AlertGroup\n hasAnimations\n isToast\n isLiveRegion\n className={classes.toastAlertGroup}\n >\n {toastAlerts.map(({ key, title, variant }) => (\n <Alert\n key={key}\n variant={AlertVariant[variant ?? 'success']}\n title={title}\n className={classes.toastAlert}\n timeout={2000}\n onTimeout={() => handleRemoveToastAlert(key as React.Key)}\n actionClose={\n <AlertActionCloseButton\n title={title as string}\n variantLabel={`${variant ?? 'success'} alert`}\n onClose={() => handleRemoveToastAlert(key as React.Key)}\n />\n }\n />\n ))}\n </AlertGroup>\n )}\n <Drawer\n isExpanded={!sidebarCollapsed}\n isInline\n position=\"start\"\n className={classes.drawerContainer}\n >\n <DrawerContent\n panelContent={!sidebarCollapsed ? panelContent : undefined}\n >\n <DrawerContentBody className={classes.drawerContentBody}>\n <div className={classes.mainArea}>\n {sidebarCollapsed && (\n <div className={classes.expandStrip}>\n <Tooltip\n content={t('notebook.view.sidebar.expand')}\n position=\"right\"\n >\n <Button\n variant=\"plain\"\n onClick={() => setSidebarCollapsed(false)}\n aria-label={t('notebook.view.sidebar.expand')}\n size=\"sm\"\n >\n <SidebarExpandIcon />\n </Button>\n </Tooltip>\n <Tooltip\n content={\n isAddDisabled\n ? t('notebook.view.documents.maxReached')\n : t('notebook.view.documents.add')\n }\n position=\"right\"\n >\n <Typography component=\"span\">\n <Button\n variant=\"plain\"\n className={classes.addIconButton}\n onClick={\n isAddDisabled ? undefined : handleOpenUploadModal\n }\n aria-label={t('notebook.view.documents.add')}\n isDisabled={isAddDisabled}\n >\n <AddCircleFilledIcon disabled={isAddDisabled} />\n </Button>\n </Typography>\n </Tooltip>\n </div>\n )}\n\n <div className={classes.contentColumn}>\n <div className={classes.topBar}>\n <Button\n variant=\"link\"\n className={classes.closeButton}\n onClick={onClose}\n icon={<TimesIcon />}\n iconPosition=\"end\"\n >\n {t('notebook.view.close')}\n </Button>\n </div>\n\n <div className={classes.mainContent}>{renderMainContent()}</div>\n\n {!hasDocuments && messages.length === 0 && (\n <div className={classes.footerAlignedAlert}>\n <Alert isInline variant=\"info\" title={t('aria.important')}>\n {t('disclaimer.withoutValidation')}\n </Alert>\n </div>\n )}\n\n <ChatbotFooter className={classes.footer}>\n {documents.length === 0 ? (\n <Tooltip\n content={t('notebook.view.input.disabledTooltip')}\n position=\"top\"\n >\n <div>\n <MessageBar\n hasAttachButton={false}\n hasMicrophoneButton={false}\n hasStopButton={false}\n isSendButtonDisabled\n isDisabled\n onSendMessage={sendMessage}\n placeholder={t('notebook.view.input.placeholder')}\n />\n </div>\n </Tooltip>\n ) : (\n <MessageBar\n hasAttachButton={false}\n hasMicrophoneButton\n hasStopButton={false}\n isSendButtonDisabled={isSendButtonDisabled}\n onSendMessage={sendMessage}\n placeholder={t('notebook.view.input.placeholder')}\n />\n )}\n <ChatbotFootnote label={t('footer.accuracy.label')} />\n </ChatbotFooter>\n </div>\n </div>\n </DrawerContentBody>\n </DrawerContent>\n </Drawer>\n\n <AddDocumentModal\n isOpen={isUploadModalOpen}\n onClose={handleCloseUploadModal}\n sessionId={sessionId}\n existingDocumentNames={documents.map(d => d.title)}\n onFilesUploading={handleFilesUploading}\n onUploadStarted={handleUploadStarted}\n onUploadFailed={handleUploadFailed}\n onDuplicatesFound={handleDuplicatesFound}\n filesToAdd={filesToAddToModal}\n onFilesAdded={handleFilesAddedToModal}\n />\n\n <OverwriteConfirmModal\n isOpen={isOverwriteModalOpen}\n onClose={handleOverwriteCancel}\n onConfirm={handleOverwriteConfirm}\n fileNames={filesToOverwrite.map(f => f.name)}\n />\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAoEA,MAAM,SAAA,GAAY,WAAW,CAAA,KAAA,MAAU;AAAA,EACrC,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,IAAA,EAAM,CAAA;AAAA,IACN,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ,MAAA;AAAA,IACR,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,CAAA;AAAA,IACN,SAAA,EAAW;AAAA,GACb;AAAA,EACA,WAAA,EAAa;AAAA,IACX,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,CAAC,CAAA;AAAA,IACpB,WAAA,EAAa;AAAA,GACf;AAAA,EACA,aAAA,EAAe;AAAA,IACb,OAAA,EAAS,CAAA;AAAA,IACT,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,KAAA;AAAA,IACf,MAAA,EAAQ,MAAA;AAAA,IACR,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,cAAA,EAAgB,UAAA;AAAA,IAChB,OAAA,EAAS,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAC,CAAA,GAAA,EAAM,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA;AAAA,GACtD;AAAA,EACA,WAAA,EAAa;AAAA,IACX,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,IAAA,EAAM,CAAA;AAAA,IACN,SAAA,EAAW;AAAA,GACb;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,eAAA,EAAiB,0DAAA;AAAA,IACjB,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,aAAA,EAAe;AAAA,IACb,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU,CAAA;AAAA,IACV,SAAA,EAAW,CAAA;AAAA,IACX,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,KAAA,EAAO,KAAA;AAAA,IACP,QAAA,EAAU,OAAA;AAAA,IACV,MAAA,EAAQ,QAAA;AAAA,IACR,OAAA,EAAS,CAAA,IAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA;AAAA,GAClC;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,gDAAA,EAAkD,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAC,CAAA,EAAA,CAAA;AAAA,IACvE,iDAAA,EAAmD,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAC,CAAA,EAAA,CAAA;AAAA,IACxE,0CAAA,EAA4C;AAAA,GAC9C;AAAA,EACA,UAAA,EAAY;AAAA,IACV,QAAA,EAAU,OAAA;AAAA,IACV,yBAAA,EAA2B;AAAA,MACzB,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,IAAA,EAAM,CAAA;AAAA,IACN,SAAA,EAAW,CAAA;AAAA,IACX,QAAA,EAAU,MAAA;AAAA,IACV,eAAA,EACE;AAAA,GACJ;AAAA,EACA,mBAAA,EAAqB;AAAA,IACnB,IAAA,EAAM,CAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,SAAA,EAAW,CAAA;AAAA,IACX,eAAA,EACE;AAAA,GACJ;AAAA,EACA,mBAAA,EAAqB;AAAA,IACnB,KAAA,EAAO,KAAA;AAAA,IACP,QAAA,EAAU,OAAA;AAAA,IACV,MAAA,EAAQ,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,cAAA,CAAA;AAAA,IAC3B,OAAA,EAAS;AAAA,GACX;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,MAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,UAAA,EAAY,IAAA;AAAA,IACZ,OAAA,EAAS,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,IAAA;AAAA,GAC9B;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,MAAA;AAAA,IACV,UAAA,EAAY,CAAA;AAAA,IACZ,KAAA,EAAO,2CAAA;AAAA,IACP,UAAA,EAAY,KAAA,CAAM,OAAA,CAAQ,GAAG;AAAA,GAC/B;AAAA,EACA,iBAAA,EAAmB;AAAA,IACjB,KAAA,EAAO,KAAA;AAAA,IACP,QAAA,EAAU,OAAA;AAAA,IACV,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,kBAAA,EAAoB;AAAA,IAClB,QAAA,EAAU,OAAA;AAAA,IACV,KAAA,EAAO,KAAA;AAAA,IACP,MAAA,EAAQ,QAAA;AAAA,IACR,OAAA,EAAS,CAAA,IAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA;AAAA,GAClC;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,UAAA,CAAW,KAAA;AAAA,IAC1C,iCAAA,EAAmC;AAAA,MACjC,KAAA,EAAO,gBAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,4BAAA,EAA8B;AAAA,MAC5B,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,GAAG;AAAA;AACzC,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,CAAA;AAAA,IACX,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,IAAA,EAAM,CAAA;AAAA,IACN,QAAA,EAAU;AAAA;AAEd,CAAA,CAAE,CAAA;AAgBK,MAAM,eAAe,CAAC;AAAA,EAC3B,SAAA;AAAA,EACA,YAAA,GAAe,sBAAA;AAAA,EACf,YAAY,EAAC;AAAA,EACb,QAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA,uBAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAAyB;AACvB,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,EAAe;AAC7B,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,YAAA,GAAe,OAAO,eAAe,CAAA;AAC3C,EAAA,MAAM,EAAE,WAAA,EAAa,qBAAA,EAAsB,GAAI,wBAAA,EAAyB;AAExE,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,QAAA;AAAA,IAC1C,UAAU,eAAA,IAAmB;AAAA,GAC/B;AACA,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAI,SAAS,KAAK,CAAA;AACtE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,QAAA;AAAA,IACtC;AAAA,GACF;AACA,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAI,QAAA;AAAA,wBAChD,GAAA;AAAI,GACV;AAEA,EAAA,MAAM,oBAAA,GAAuB,WAAA;AAAA,IAC3B,OAAO,UAAA,KAAuB;AAC5B,MAAA,sBAAA,CAAuB,UAAQ,IAAI,GAAA,CAAI,IAAI,CAAA,CAAE,GAAA,CAAI,UAAU,CAAC,CAAA;AAC5D,MAAA,IAAI;AACF,QAAA,MAAM,YAAA,CAAa,cAAA,CAAe,SAAA,EAAW,UAAU,CAAA;AACvD,QAAA,WAAA,CAAY,iBAAA,CAAkB;AAAA,UAC5B,QAAA,EAAU,CAAC,WAAA,EAAa,WAAA,EAAa,SAAS;AAAA,SAC/C,CAAA;AAAA,MACH,CAAA,SAAE;AACA,QAAA,sBAAA,CAAuB,CAAA,IAAA,KAAQ;AAC7B,UAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,UAAA,IAAA,CAAK,OAAO,UAAU,CAAA;AACtB,UAAA,OAAO,IAAA;AAAA,QACT,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,SAAA,EAAW,WAAW;AAAA,GACvC;AAEA,EAAA,MAAM,UAAA,GAAa,WAAA;AAAA,IACjB,CAAC,OAAA,KAAoB;AACnB,MAAA,uBAAA,CAAwB,KAAK,CAAA;AAC7B,MAAA,eAAA,CAAgB,CAAA,kBAAA,EAAqB,OAAO,CAAA,CAAE,CAAA;AAC9C,MAAA,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,CAAC,sBAAA,EAAwB,cAAc;AAAA,OAClD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,aAAa,cAAc;AAAA,GAC9B;AAEA,EAAA,MAAM,OAAA,GAAU,WAAA,CAAY,CAAC,OAAA,KAAoB;AAC/C,IAAA,iBAAA,CAAkB,OAAO,CAAA;AAAA,EAC3B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,oBAAA,GAAuB,WAAA;AAAA,IAC3B,OAAO,IAAA,KAAiC;AACtC,MAAA,OAAO,qBAAA,CAAsB;AAAA,QAC3B,QAAQ,IAAA,CAAK,MAAA;AAAA,QACb;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,uBAAuB,SAAS;AAAA,GACnC;AAEA,EAAA,MAAM,EAAE,oBAAA,EAAsB,iBAAA,EAAmB,iBAAA,EAAkB,GACjE,uBAAA;AAAA,IACE,cAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,EAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AAEF,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAC1B,SAAyB,oBAAoB,CAAA;AAE/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,WAAA,CAAY,oBAAoB,CAAA;AAAA,EAClC,CAAA,EAAG,CAAC,oBAAoB,CAAC,CAAA;AAEzB,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,OAAA,KAA6B;AAC5B,MAAA,eAAA;AAAA,QACE,EAAE,uCAAA,EAAgD;AAAA,UAChD,MAAA,EAAQ,QAAQ,QAAA;AAAS,SAC1B;AAAA,OACH;AACA,MAAA,iBAAA,CAAkB,OAAA,CAAQ,QAAA,EAAS,EAAG,EAAE,CAAA;AACxC,MAAA,uBAAA,CAAwB,IAAI,CAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,mBAAmB,CAAC;AAAA,GACvB;AAEA,EAAA,MAAM,gBAAgB,iBAAA,EAAkB;AACxC,EAAA,MAAM,cAAA,GACJ,aAAA,EAAe,GAAA,CAAI,CAAA,MAAA,KAAU;AAC3B,IAAA,MAAM,CAAA,GAAI,MAAA;AACV,IAAA,OAAO;AAAA,MACL,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,SAAS,CAAA,CAAE,OAAA;AAAA,MACX,OAAA,EAAS,MAAM,WAAA,CAAY,CAAA,CAAE,OAAO;AAAA,KACtC;AAAA,EACF,CAAC,KAAK,EAAC;AAET,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,KAAK,CAAA;AAC9D,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAS,KAAK,CAAA;AAChE,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAI,QAAA,CAAmB,EAAE,CAAA;AACzE,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,QAAA,CAA0B,EAAE,CAAA;AACxE,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,QAAA,CAAgC,EAAE,CAAA;AACxE,EAAA,MAAM,YAAA,GAAe,MAAA,iBAAoB,IAAI,GAAA,EAAK,CAAA;AAClD,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAI,QAAA;AAAA,wBAC9C,GAAA;AAAI,GACV;AACA,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,QAAA,CAAiB,EAAE,CAAA;AACnE,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAI,SAAS,KAAK,CAAA;AACtE,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,QAAA,CAAiB,EAAE,CAAA;AAErE,EAAA,MAAM,qBAAA,GAAwB,MAAM,oBAAA,CAAqB,IAAI,CAAA;AAC7D,EAAA,MAAM,sBAAA,GAAyB,MAAM,oBAAA,CAAqB,KAAK,CAAA;AAE/D,EAAA,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAAkB;AAC9C,IAAA,qBAAA,CAAsB,CAAA,IAAA,KAAQ;AAC5B,MAAA,MAAM,QAAA,GAAW,KAAA,CACd,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,IAAI,CAAA,CACf,MAAA,CAAO,CAAA,IAAA,KAAQ,CAAC,IAAA,CAAK,QAAA,CAAS,IAAI,CAAC,CAAA;AACtC,MAAA,OAAO,CAAC,GAAG,IAAA,EAAM,GAAG,QAAQ,CAAA;AAAA,IAC9B,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,mBAAA,GAAsB,CAAC,IAAA,KAGvB;AACJ,IAAA,YAAA,CAAa,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA;AAC3C,IAAA,iBAAA,CAAkB,CAAA,IAAA,KAAQ;AAAA,MACxB,GAAG,IAAA;AAAA,MACH,EAAE,QAAA,EAAU,IAAA,CAAK,QAAA,EAAU,UAAA,EAAY,KAAK,UAAA;AAAW,KACxD,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,QAAA,KAAqB;AAC/C,IAAA,qBAAA,CAAsB,UAAQ,IAAA,CAAK,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,KAAM,QAAQ,CAAC,CAAA;AAC9D,IAAA,cAAA,CAAe,CAAA,IAAA,KAAQ;AAAA,MACrB;AAAA,QACE,GAAA,EAAK,IAAA,CAAK,GAAA,EAAI,GAAI,QAAA;AAAA,QAClB,KAAA,EAAQ,EAAe,wBAAA,EAA0B;AAAA,UAC/C;AAAA,SACD,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,OACX;AAAA,MACA,GAAG;AAAA,KACJ,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,qBAAA,GAAwB,CAAC,KAAA,KAAkB;AAC/C,IAAA,mBAAA,CAAoB,KAAK,CAAA;AACzB,IAAA,uBAAA,CAAwB,IAAI,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,KAAA,GAAQ,gBAAA;AACd,IAAA,uBAAA,CAAwB,KAAK,CAAA;AAC7B,IAAA,mBAAA,CAAoB,EAAE,CAAA;AAEtB,IAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AAExB,IAAA,oBAAA,CAAqB,KAAK,CAAA;AAAA,EAC5B,CAAA;AAEA,EAAA,MAAM,0BAA0B,MAAM;AACpC,IAAA,oBAAA,CAAqB,EAAE,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,wBAAwB,MAAM;AAClC,IAAA,uBAAA,CAAwB,KAAK,CAAA;AAC7B,IAAA,mBAAA,CAAoB,EAAE,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,wBAAA,CAAyB,SAAA,EAAW,cAAc,CAAA;AAEzE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,oBAAoB,cAAA,CAAe,MAAA;AAAA,MACvC,CAAA,CAAA,KAAA,CACG,CAAA,CAAE,MAAA,KAAW,WAAA,IACZ,EAAE,MAAA,KAAW,QAAA,IACb,CAAA,CAAE,MAAA,KAAW,gBACf,CAAC,YAAA,CAAa,OAAA,CAAQ,GAAA,CAAI,EAAE,UAAU;AAAA,KAC1C;AAEA,IAAA,IAAI,iBAAA,CAAkB,WAAW,CAAA,EAAG;AAEpC,IAAA,MAAM,WAAA,uBAAkB,GAAA,EAAY;AACpC,IAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AACtC,IAAA,MAAM,YAAmC,EAAC;AAE1C,IAAA,MAAM,iBAAA,uBAAwB,GAAA,EAAY;AAE1C,IAAA,KAAA,MAAW,UAAU,iBAAA,EAAmB;AACtC,MAAA,YAAA,CAAa,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,UAAU,CAAA;AAC1C,MAAA,WAAA,CAAY,GAAA,CAAI,OAAO,UAAU,CAAA;AACjC,MAAA,aAAA,CAAc,GAAA,CAAI,OAAO,QAAQ,CAAA;AACjC,MAAA,IAAI,MAAA,CAAO,WAAW,WAAA,EAAa;AACjC,QAAA,iBAAA,CAAkB,GAAA,CAAI,OAAO,QAAQ,CAAA;AAAA,MACvC;AAEA,MAAA,IAAI,MAAA,CAAO,WAAW,WAAA,EAAa;AACjC,QAAA,SAAA,CAAU,IAAA,CAAK;AAAA,UACb,GAAA,EAAK,IAAA,CAAK,GAAA,EAAI,GAAI,MAAA,CAAO,UAAA;AAAA,UACzB,KAAA,EAAQ,EAAe,yBAAA,EAA2B;AAAA,YAChD,UAAU,MAAA,CAAO;AAAA,WAClB,CAAA;AAAA,UACD,OAAA,EAAS;AAAA,SACV,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,SAAA,CAAU,IAAA,CAAK;AAAA,UACb,GAAA,EAAK,IAAA,CAAK,GAAA,EAAI,GAAI,MAAA,CAAO,UAAA;AAAA,UACzB,KAAA,EAAQ,EAAe,wBAAA,EAA0B;AAAA,YAC/C,UAAU,MAAA,CAAO;AAAA,WAClB,CAAA;AAAA,UACD,OAAA,EAAS;AAAA,SACV,CAAA;AAAA,MACH;AAAA,IACF;AAEA,IAAA,iBAAA,CAAkB,CAAA,IAAA,KAAQ,IAAA,CAAK,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,YAAY,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC,CAAC,CAAA;AAC1E,IAAA,qBAAA;AAAA,MAAsB,CAAA,IAAA,KACpB,KAAK,MAAA,CAAO,CAAA,IAAA,KAAQ,CAAC,aAAA,CAAc,GAAA,CAAI,IAAI,CAAC;AAAA,KAC9C;AACA,IAAA,IAAI,iBAAA,CAAkB,OAAO,CAAA,EAAG;AAC9B,MAAA,qBAAA,CAAsB,CAAA,IAAA,yBAAY,GAAA,CAAI,CAAC,GAAG,IAAA,EAAM,GAAG,iBAAiB,CAAC,CAAC,CAAA;AACtE,MAAA,WAAA,CAAY,iBAAA,CAAkB;AAAA,QAC5B,QAAA,EAAU,CAAC,WAAA,EAAa,WAAA,EAAa,SAAS;AAAA,OAC/C,CAAA;AAAA,IACH;AACA,IAAA,cAAA,CAAe,UAAQ,CAAC,GAAG,SAAA,EAAW,GAAG,IAAI,CAAC,CAAA;AAAA,EAChD,GAAG,CAAC,cAAA,EAAgB,CAAA,EAAG,WAAA,EAAa,SAAS,CAAC,CAAA;AAE9C,EAAA,MAAM,sBAAA,GAAyB,CAAC,GAAA,KAAmB;AACjD,IAAA,cAAA,CAAe,UAAQ,IAAA,CAAK,MAAA,CAAO,OAAK,CAAA,CAAE,GAAA,KAAQ,GAAG,CAAC,CAAA;AAAA,EACxD,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,SAAA,CAAU,MAAA,GAAS,CAAA,IAAK,mBAAmB,MAAA,GAAS,CAAA;AACzE,EAAA,MAAM,kBAAA,GAAqB,SAAA,CAAU,MAAA,GAAS,kBAAA,CAAmB,MAAA;AACjE,EAAA,MAAM,gBAAgB,kBAAA,IAAsB,kBAAA;AAE5C,EAAA,MAAM,YAAA,mBACJ,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAY,OAAA;AAAA,MACZ,OAAA,EAAQ,OAAA;AAAA,MACR,OAAA,EAAQ,KAAA;AAAA,MACR,eAAA,EAAiB,EAAE,8BAA8B,CAAA;AAAA,MAEjD,QAAA,kBAAA,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,YAAA;AAAA,UACA,SAAA;AAAA,UACA,kBAAA;AAAA,UACA,kBAAA;AAAA,UACA,mBAAA;AAAA,UACA,SAAA,EAAW,gBAAA;AAAA,UACX,gBAAA,EAAkB,MAAM,mBAAA,CAAoB,CAAA,IAAA,KAAQ,CAAC,IAAI,CAAA;AAAA,UACzD,aAAA,EAAe,qBAAA;AAAA,UACf,gBAAA,EAAkB;AAAA;AAAA;AACpB;AAAA,GACF;AAGF,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,IAAI,CAAC,YAAA,IAAgB,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG;AAC1C,MAAA,uBACE,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,MAAA,EAAO,SAAA,EAAW,OAAA,CAAQ,mBAAA,EAC9C,QAAA,kBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,aAAA,EAAe,qBAAA,EAAuB,CAAA,EAC9D,CAAA;AAAA,IAEJ;AACA,IAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,MAAA,uBACE,GAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAW,OAAA,CAAQ,WAAA,EACjC,QAAA,kBAAA,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,QAAA;AAAA,UACA,QAAA;AAAA,UACA,cAAA;AAAA,UACA,YAAA;AAAA,UACA,GAAA,EAAK,iBAAA;AAAA,UACL,gBAAgB,EAAC;AAAA,UACjB,cAAA;AAAA,UACA,WAAA,EAAa,oBAAA;AAAA,UACb;AAAA;AAAA,OACF,EACF,CAAA;AAAA,IAEJ;AACA,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,gBAAA,EACtB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,SAAI,SAAA,EAAW,OAAA,CAAQ,cAAA,EACtB,QAAA,kBAAA,GAAA,CAAC,SAAM,QAAA,EAAQ,IAAA,EAAC,OAAA,EAAQ,MAAA,EAAO,OAAO,CAAA,CAAE,gBAAgB,GACrD,QAAA,EAAA,CAAA,CAAE,8BAA8B,GACnC,CAAA,EACF,CAAA;AAAA,sBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,mBAAA,EACtB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,OAAA,CAAQ,eAAA,EAC5B,QAAA,EAAA,YAAA,EACH,CAAA;AAAA,QACC,gCACC,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,OAAA,CAAQ,iBAC5B,QAAA,EAAA,YAAA,EACH;AAAA,OAAA,EAEJ,CAAA;AAAA,MACC,eAAe,MAAA,GAAS,CAAA,wBACtB,KAAA,EAAA,EAAI,SAAA,EAAW,QAAQ,iBAAA,EACtB,QAAA,kBAAA,GAAA;AAAA,QAAC,oBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,EAAA;AAAA,UACN,WAAA,EAAY,EAAA;AAAA,UACZ,OAAA,EAAS;AAAA;AAAA,OACX,EACF;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,IAAA,EACrB,QAAA,EAAA;AAAA,IAAA,WAAA,CAAY,SAAS,CAAA,oBACpB,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAa,IAAA;AAAA,QACb,OAAA,EAAO,IAAA;AAAA,QACP,YAAA,EAAY,IAAA;AAAA,QACZ,WAAW,OAAA,CAAQ,eAAA;AAAA,QAElB,sBAAY,GAAA,CAAI,CAAC,EAAE,GAAA,EAAK,KAAA,EAAO,SAAQ,qBACtC,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,OAAA,EAAS,YAAA,CAAa,OAAA,IAAW,SAAS,CAAA;AAAA,YAC1C,KAAA;AAAA,YACA,WAAW,OAAA,CAAQ,UAAA;AAAA,YACnB,OAAA,EAAS,GAAA;AAAA,YACT,SAAA,EAAW,MAAM,sBAAA,CAAuB,GAAgB,CAAA;AAAA,YACxD,WAAA,kBACE,GAAA;AAAA,cAAC,sBAAA;AAAA,cAAA;AAAA,gBACC,KAAA;AAAA,gBACA,YAAA,EAAc,CAAA,EAAG,OAAA,IAAW,SAAS,CAAA,MAAA,CAAA;AAAA,gBACrC,OAAA,EAAS,MAAM,sBAAA,CAAuB,GAAgB;AAAA;AAAA;AACxD,WAAA;AAAA,UAXG;AAAA,SAcR;AAAA;AAAA,KACH;AAAA,oBAEF,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,YAAY,CAAC,gBAAA;AAAA,QACb,QAAA,EAAQ,IAAA;AAAA,QACR,QAAA,EAAS,OAAA;AAAA,QACT,WAAW,OAAA,CAAQ,eAAA;AAAA,QAEnB,QAAA,kBAAA,GAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAc,CAAC,gBAAA,GAAmB,YAAA,GAAe,MAAA;AAAA,YAEjD,QAAA,kBAAA,GAAA,CAAC,qBAAkB,SAAA,EAAW,OAAA,CAAQ,mBACpC,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,QAAA,EACrB,QAAA,EAAA;AAAA,cAAA,gBAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,WAAA,EACtB,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,OAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAS,EAAE,8BAA8B,CAAA;AAAA,oBACzC,QAAA,EAAS,OAAA;AAAA,oBAET,QAAA,kBAAA,GAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACC,OAAA,EAAQ,OAAA;AAAA,wBACR,OAAA,EAAS,MAAM,mBAAA,CAAoB,KAAK,CAAA;AAAA,wBACxC,YAAA,EAAY,EAAE,8BAA8B,CAAA;AAAA,wBAC5C,IAAA,EAAK,IAAA;AAAA,wBAEL,8BAAC,iBAAA,EAAA,EAAkB;AAAA;AAAA;AACrB;AAAA,iBACF;AAAA,gCACA,GAAA;AAAA,kBAAC,OAAA;AAAA,kBAAA;AAAA,oBACC,SACE,aAAA,GACI,CAAA,CAAE,oCAAoC,CAAA,GACtC,EAAE,6BAA6B,CAAA;AAAA,oBAErC,QAAA,EAAS,OAAA;AAAA,oBAET,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,MAAA,EACpB,QAAA,kBAAA,GAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBACC,OAAA,EAAQ,OAAA;AAAA,wBACR,WAAW,OAAA,CAAQ,aAAA;AAAA,wBACnB,OAAA,EACE,gBAAgB,MAAA,GAAY,qBAAA;AAAA,wBAE9B,YAAA,EAAY,EAAE,6BAA6B,CAAA;AAAA,wBAC3C,UAAA,EAAY,aAAA;AAAA,wBAEZ,QAAA,kBAAA,GAAA,CAAC,mBAAA,EAAA,EAAoB,QAAA,EAAU,aAAA,EAAe;AAAA;AAAA,qBAChD,EACF;AAAA;AAAA;AACF,eAAA,EACF,CAAA;AAAA,8BAGF,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,aAAA,EACtB,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,MAAA,EACtB,QAAA,kBAAA,GAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,OAAA,EAAQ,MAAA;AAAA,oBACR,WAAW,OAAA,CAAQ,WAAA;AAAA,oBACnB,OAAA,EAAS,OAAA;AAAA,oBACT,IAAA,sBAAO,SAAA,EAAA,EAAU,CAAA;AAAA,oBACjB,YAAA,EAAa,KAAA;AAAA,oBAEZ,YAAE,qBAAqB;AAAA;AAAA,iBAC1B,EACF,CAAA;AAAA,oCAEC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,WAAA,EAAc,6BAAkB,EAAE,CAAA;AAAA,gBAEzD,CAAC,gBAAgB,QAAA,CAAS,MAAA,KAAW,qBACpC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,kBAAA,EACtB,QAAA,kBAAA,GAAA,CAAC,SAAM,QAAA,EAAQ,IAAA,EAAC,OAAA,EAAQ,MAAA,EAAO,KAAA,EAAO,CAAA,CAAE,gBAAgB,CAAA,EACrD,QAAA,EAAA,CAAA,CAAE,8BAA8B,CAAA,EACnC,CAAA,EACF,CAAA;AAAA,gCAGF,IAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAW,OAAA,CAAQ,MAAA,EAC/B,QAAA,EAAA;AAAA,kBAAA,SAAA,CAAU,WAAW,CAAA,mBACpB,GAAA;AAAA,oBAAC,OAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EAAS,EAAE,qCAAqC,CAAA;AAAA,sBAChD,QAAA,EAAS,KAAA;AAAA,sBAET,8BAAC,KAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,wBAAC,UAAA;AAAA,wBAAA;AAAA,0BACC,eAAA,EAAiB,KAAA;AAAA,0BACjB,mBAAA,EAAqB,KAAA;AAAA,0BACrB,aAAA,EAAe,KAAA;AAAA,0BACf,oBAAA,EAAoB,IAAA;AAAA,0BACpB,UAAA,EAAU,IAAA;AAAA,0BACV,aAAA,EAAe,WAAA;AAAA,0BACf,WAAA,EAAa,EAAE,iCAAiC;AAAA;AAAA,uBAClD,EACF;AAAA;AAAA,mBACF,mBAEA,GAAA;AAAA,oBAAC,UAAA;AAAA,oBAAA;AAAA,sBACC,eAAA,EAAiB,KAAA;AAAA,sBACjB,mBAAA,EAAmB,IAAA;AAAA,sBACnB,aAAA,EAAe,KAAA;AAAA,sBACf,oBAAA;AAAA,sBACA,aAAA,EAAe,WAAA;AAAA,sBACf,WAAA,EAAa,EAAE,iCAAiC;AAAA;AAAA,mBAClD;AAAA,kCAEF,GAAA,CAAC,eAAA,EAAA,EAAgB,KAAA,EAAO,CAAA,CAAE,uBAAuB,CAAA,EAAG;AAAA,iBAAA,EACtD;AAAA,eAAA,EACF;AAAA,aAAA,EACF,CAAA,EACF;AAAA;AAAA;AACF;AAAA,KACF;AAAA,oBAEA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,iBAAA;AAAA,QACR,OAAA,EAAS,sBAAA;AAAA,QACT,SAAA;AAAA,QACA,qBAAA,EAAuB,SAAA,CAAU,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,KAAK,CAAA;AAAA,QACjD,gBAAA,EAAkB,oBAAA;AAAA,QAClB,eAAA,EAAiB,mBAAA;AAAA,QACjB,cAAA,EAAgB,kBAAA;AAAA,QAChB,iBAAA,EAAmB,qBAAA;AAAA,QACnB,UAAA,EAAY,iBAAA;AAAA,QACZ,YAAA,EAAc;AAAA;AAAA,KAChB;AAAA,oBAEA,GAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,oBAAA;AAAA,QACR,OAAA,EAAS,qBAAA;AAAA,QACT,SAAA,EAAW,sBAAA;AAAA,QACX,SAAA,EAAW,gBAAA,CAAiB,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAI;AAAA;AAAA;AAC7C,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -30,6 +30,7 @@ const lightspeedTranslationDe = createTranslationMessages({
|
|
|
30
30
|
"notebooks.updated.yesterday": "Vor 1 Tag aktualisiert",
|
|
31
31
|
"notebooks.updated.days": "Vor {{days}} Tagen aktualisiert",
|
|
32
32
|
"notebooks.updated.on": "Aktualisiert am",
|
|
33
|
+
"notebooks.card.openAria": "Notizbuch {{name}} \xF6ffnen",
|
|
33
34
|
// Notebook view
|
|
34
35
|
"notebook.view.title": "Unbenanntes Notizbuch",
|
|
35
36
|
"notebook.view.close": "Notizbuch schlie\xDFen",
|