@memori.ai/memori-react 8.2.0 → 8.4.0-rc.0
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 +27 -0
- package/dist/components/Chat/Chat.js +8 -1
- package/dist/components/Chat/Chat.js.map +1 -1
- package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +160 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.d.ts +4 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +166 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +877 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.d.ts +3 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +115 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +238 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.d.ts +4 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +104 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.css +319 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.d.ts +4 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.js +50 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.js.map +1 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +343 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.d.ts +4 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +78 -0
- package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -0
- package/dist/components/MemoriArtifactSystem/context/ArtifactSystemContext.d.ts +12 -0
- package/dist/components/MemoriArtifactSystem/context/ArtifactSystemContext.js +22 -0
- package/dist/components/MemoriArtifactSystem/context/ArtifactSystemContext.js.map +1 -0
- package/dist/components/MemoriArtifactSystem/hooks/useArtifactSystem.d.ts +12 -0
- package/dist/components/MemoriArtifactSystem/hooks/useArtifactSystem.js +288 -0
- package/dist/components/MemoriArtifactSystem/hooks/useArtifactSystem.js.map +1 -0
- package/dist/components/MemoriArtifactSystem/index.d.ts +9 -0
- package/dist/components/MemoriArtifactSystem/index.js +28 -0
- package/dist/components/MemoriArtifactSystem/index.js.map +1 -0
- package/dist/components/MemoriArtifactSystem/types/artifact.types.d.ts +108 -0
- package/dist/components/MemoriArtifactSystem/types/artifact.types.js +31 -0
- package/dist/components/MemoriArtifactSystem/types/artifact.types.js.map +1 -0
- package/dist/components/icons/Print.d.ts +6 -0
- package/dist/components/icons/Print.js +6 -0
- package/dist/components/icons/Print.js.map +1 -0
- package/dist/components/layouts/Chat.js +29 -1
- package/dist/components/layouts/Chat.js.map +1 -1
- package/dist/components/layouts/FullPage.js +33 -1
- package/dist/components/layouts/FullPage.js.map +1 -1
- package/dist/components/layouts/ZoomedFullBody.js +29 -2
- package/dist/components/layouts/ZoomedFullBody.js.map +1 -1
- package/dist/components/layouts/chat.css +335 -13
- package/dist/components/layouts/zoomed-full-body.css +1 -3
- package/dist/helpers/message.js +1 -0
- package/dist/helpers/message.js.map +1 -1
- package/dist/helpers/stt/useSTT.js +76 -9
- package/dist/helpers/stt/useSTT.js.map +1 -1
- package/dist/index.js +58 -15
- package/dist/index.js.map +1 -1
- package/dist/styles.css +5 -0
- package/esm/components/Chat/Chat.js +8 -1
- package/esm/components/Chat/Chat.js.map +1 -1
- package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +160 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.d.ts +4 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +163 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +877 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.d.ts +3 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +112 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +238 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.d.ts +4 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +101 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.css +319 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.d.ts +4 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.js +47 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.js.map +1 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +343 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.d.ts +4 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +75 -0
- package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -0
- package/esm/components/MemoriArtifactSystem/context/ArtifactSystemContext.d.ts +12 -0
- package/esm/components/MemoriArtifactSystem/context/ArtifactSystemContext.js +17 -0
- package/esm/components/MemoriArtifactSystem/context/ArtifactSystemContext.js.map +1 -0
- package/esm/components/MemoriArtifactSystem/hooks/useArtifactSystem.d.ts +12 -0
- package/esm/components/MemoriArtifactSystem/hooks/useArtifactSystem.js +281 -0
- package/esm/components/MemoriArtifactSystem/hooks/useArtifactSystem.js.map +1 -0
- package/esm/components/MemoriArtifactSystem/index.d.ts +9 -0
- package/esm/components/MemoriArtifactSystem/index.js +9 -0
- package/esm/components/MemoriArtifactSystem/index.js.map +1 -0
- package/esm/components/MemoriArtifactSystem/types/artifact.types.d.ts +108 -0
- package/esm/components/MemoriArtifactSystem/types/artifact.types.js +28 -0
- package/esm/components/MemoriArtifactSystem/types/artifact.types.js.map +1 -0
- package/esm/components/icons/Print.d.ts +6 -0
- package/esm/components/icons/Print.js +4 -0
- package/esm/components/icons/Print.js.map +1 -0
- package/esm/components/layouts/Chat.js +29 -1
- package/esm/components/layouts/Chat.js.map +1 -1
- package/esm/components/layouts/FullPage.js +33 -1
- package/esm/components/layouts/FullPage.js.map +1 -1
- package/esm/components/layouts/ZoomedFullBody.js +30 -3
- package/esm/components/layouts/ZoomedFullBody.js.map +1 -1
- package/esm/components/layouts/chat.css +335 -13
- package/esm/components/layouts/zoomed-full-body.css +1 -3
- package/esm/helpers/message.js +1 -0
- package/esm/helpers/message.js.map +1 -1
- package/esm/helpers/stt/useSTT.js +76 -9
- package/esm/helpers/stt/useSTT.js.map +1 -1
- package/esm/index.js +58 -15
- package/esm/index.js.map +1 -1
- package/esm/styles.css +5 -0
- package/package.json +1 -1
- package/src/components/Avatar/Avatar.test.tsx +13 -0
- package/src/components/Chat/Chat.stories.tsx +33 -2
- package/src/components/Chat/Chat.test.tsx +340 -213
- package/src/components/Chat/Chat.tsx +27 -4
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +160 -0
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +278 -0
- package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +877 -0
- package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +308 -0
- package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +238 -0
- package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +282 -0
- package/src/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.css +319 -0
- package/src/components/MemoriArtifactSystem/components/ArtifactHistory/ArtifactHistory.tsx +178 -0
- package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +343 -0
- package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +190 -0
- package/src/components/MemoriArtifactSystem/context/ArtifactSystemContext.tsx +57 -0
- package/src/components/MemoriArtifactSystem/hooks/useArtifactSystem.ts +419 -0
- package/src/components/MemoriArtifactSystem/index.ts +45 -0
- package/src/components/MemoriArtifactSystem/types/artifact.types.ts +180 -0
- package/src/components/icons/Print.tsx +34 -0
- package/src/components/layouts/Chat.test.tsx +13 -0
- package/src/components/layouts/Chat.tsx +80 -25
- package/src/components/layouts/FullPage.test.tsx +40 -11
- package/src/components/layouts/FullPage.tsx +92 -24
- package/src/components/layouts/HiddenChat.test.tsx +13 -0
- package/src/components/layouts/Totem.test.tsx +13 -0
- package/src/components/layouts/WebsiteAssistant.test.tsx +13 -0
- package/src/components/layouts/ZoomedFullBody.test.tsx +13 -0
- package/src/components/layouts/ZoomedFullBody.tsx +78 -14
- package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +252 -248
- package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +504 -496
- package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +252 -248
- package/src/components/layouts/chat.css +335 -13
- package/src/components/layouts/layouts.stories.tsx +13 -2
- package/src/components/layouts/zoomed-full-body.css +1 -3
- package/src/helpers/message.ts +1 -0
- package/src/helpers/stt/useSTT.ts +101 -16
- package/src/index.stories.tsx +26 -22
- package/src/index.tsx +46 -0
- package/src/mocks/data.ts +258 -0
- package/src/styles.css +5 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
## [8.4.0-rc.0](https://github.com/memori-ai/memori-react/compare/v8.3.0...v8.4.0-rc.0) (2025-09-05)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* enhance chat layout with artifact drawer and responsive design adjustments ([2c37bc5](https://github.com/memori-ai/memori-react/commit/2c37bc5cfb15ce56395157f98f3ff3466d97a5eb))
|
|
9
|
+
* integrate ArtifactSystemProvider for enhanced artifact management across layouts ([3201f45](https://github.com/memori-ai/memori-react/commit/3201f454b14a2880bb3f3e5cf72f6d7fa380d445))
|
|
10
|
+
* integrate MemoriArtifactSystem for enhanced artifact handling in chat ([d1f6cd9](https://github.com/memori-ai/memori-react/commit/d1f6cd91e503d9fad1fc1b86a4c3d3556c7000f7))
|
|
11
|
+
* update layouts and chat components ([6b4382e](https://github.com/memori-ai/memori-react/commit/6b4382eac91aeeeffdc2395ae9395849c9a18b82))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* adjust min-height property in chat layout for better responsiveness ([065a8ee](https://github.com/memori-ai/memori-react/commit/065a8ee63ee32a2c040c5fc9a7d791a7d6dbfe28))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Changes
|
|
20
|
+
|
|
21
|
+
* introduce context for improved artifact management ([42da76e](https://github.com/memori-ai/memori-react/commit/42da76e4d9ca57040efd31646d6b5669c52cb988))
|
|
22
|
+
|
|
23
|
+
## [8.3.0](https://github.com/memori-ai/memori-react/compare/v8.2.0...v8.3.0) (2025-09-03)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Features
|
|
27
|
+
|
|
28
|
+
* implement WAV format conversion for Azure STT support in useSTT hook ([4b10032](https://github.com/memori-ai/memori-react/commit/4b10032998274ba738c66c69d532f7bc4544cfc0))
|
|
29
|
+
|
|
3
30
|
## [8.2.0](https://github.com/memori-ai/memori-react/compare/v8.1.0...v8.2.0) (2025-08-29)
|
|
4
31
|
|
|
5
32
|
|
|
@@ -11,8 +11,12 @@ const MediaWidget_1 = tslib_1.__importDefault(require("../MediaWidget/MediaWidge
|
|
|
11
11
|
const ChatInputs_1 = tslib_1.__importDefault(require("../ChatInputs/ChatInputs"));
|
|
12
12
|
const Typing_1 = tslib_1.__importDefault(require("../Typing/Typing"));
|
|
13
13
|
const constants_1 = require("../../helpers/constants");
|
|
14
|
+
const MemoriArtifactSystem_1 = require("../MemoriArtifactSystem");
|
|
15
|
+
const useArtifactSystem_1 = require("../MemoriArtifactSystem/hooks/useArtifactSystem");
|
|
14
16
|
const Chat = ({ memori, tenant, sessionID, baseUrl, apiUrl, client, translateTo, memoriTyping, typingText, showTypingText = false, history = [], authToken, dialogState, simulateUserPrompt, showDates = false, showContextPerLine = false, showAIicon = true, showWhyThisAnswer = true, showCopyButton = true, showTranslationOriginal = false, showReasoning = false, preview = false, instruct = false, showInputs = true, showMicrophone = false, microphoneMode = 'HOLD_TO_TALK', sendOnEnter, setSendOnEnter, attachmentsMenuOpen, setAttachmentsMenuOpen, userMessage = '', onChangeUserMessage, sendMessage, listening, setEnableFocusChatInput, isPlayingAudio, stopAudio, startListening, stopListening, customMediaRenderer, user, userAvatar, showUpload = false, experts, useMathFormatting = false, isHistoryView = false, showFunctionCache = false, }) => {
|
|
15
17
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
18
|
+
const { state, actions, config } = (0, MemoriArtifactSystem_1.useArtifactSystemContext)();
|
|
19
|
+
const { hasArtifacts } = (0, useArtifactSystem_1.useArtifactDetector)();
|
|
16
20
|
const scrollToBottom = () => {
|
|
17
21
|
if (isHistoryView)
|
|
18
22
|
return;
|
|
@@ -50,6 +54,7 @@ const Chat = ({ memori, tenant, sessionID, baseUrl, apiUrl, client, translateTo,
|
|
|
50
54
|
scrollToBottom();
|
|
51
55
|
}
|
|
52
56
|
};
|
|
57
|
+
console.log(history);
|
|
53
58
|
return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)('memori-chat--wrapper', {
|
|
54
59
|
'memori-chat-wrapper--translate': translateTo,
|
|
55
60
|
}), id: "chat-wrapper", lang: translateTo === null || translateTo === void 0 ? void 0 : translateTo.toUpperCase(), "data-memori-lang": (_d = (_c = (_b = (_a = memori.culture) === null || _a === void 0 ? void 0 : _a.split('-')) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.toUpperCase()) !== null && _d !== void 0 ? _d : 'EN', children: [(0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('memori-chat--history', {
|
|
@@ -108,7 +113,9 @@ const Chat = ({ memori, tenant, sessionID, baseUrl, apiUrl, client, translateTo,
|
|
|
108
113
|
}
|
|
109
114
|
return attachments;
|
|
110
115
|
})(),
|
|
111
|
-
], links: (_e = message === null || message === void 0 ? void 0 : message.media) === null || _e === void 0 ? void 0 : _e.filter(m => m.mimeType === 'text/html'), sessionID: sessionID, baseUrl: baseUrl, apiUrl: apiUrl, translateTo: translateTo, customMediaRenderer: customMediaRenderer, fromUser: message.fromUser })
|
|
116
|
+
], links: (_e = message === null || message === void 0 ? void 0 : message.media) === null || _e === void 0 ? void 0 : _e.filter(m => m.mimeType === 'text/html'), sessionID: sessionID, baseUrl: baseUrl, apiUrl: apiUrl, translateTo: translateTo, customMediaRenderer: customMediaRenderer, fromUser: message.fromUser }), (0, jsx_runtime_1.jsx)(MemoriArtifactSystem_1.ArtifactHandler, { onArtifactCreated: artifact => {
|
|
117
|
+
actions.selectArtifact(artifact);
|
|
118
|
+
}, artifacts: state.history, config: config, actions: actions, message: message })] }, `${index}-${((_f = message.text) === null || _f === void 0 ? void 0 : _f.includes('<document_attachment'))
|
|
112
119
|
? 'has-attachments'
|
|
113
120
|
: 'no-attachments'}-${message.timestamp}`));
|
|
114
121
|
}), (dialogState === null || dialogState === void 0 ? void 0 : dialogState.hints) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chat.js","sourceRoot":"","sources":["../../../src/components/Chat/Chat.tsx"],"names":[],"mappings":";;;;AAAA,uDAAyD;AACzD,oEAA4B;AAU5B,+CAAqD;AACrD,+CAAqD;AACrD,kFAAkD;AAClD,qFAEoC;AAGpC,kFAAkD;AAClD,sEAAsC;AACtC,uDAAyE;
|
|
1
|
+
{"version":3,"file":"Chat.js","sourceRoot":"","sources":["../../../src/components/Chat/Chat.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArtifactActions CSS Styles
|
|
3
|
+
* Following the project's design system and CSS patterns
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
.memori-artifact-actions {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-wrap: wrap;
|
|
9
|
+
align-items: center;
|
|
10
|
+
gap: 0.5rem;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.memori-artifact-action-btn {
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
padding: 0.75rem 1rem;
|
|
17
|
+
border: none;
|
|
18
|
+
border-radius: var(--memori-border-radius, 4px);
|
|
19
|
+
background: transparent;
|
|
20
|
+
color: var(--memori-text-color, #666);
|
|
21
|
+
cursor: pointer;
|
|
22
|
+
font-size: 0.875rem;
|
|
23
|
+
font-weight: 500;
|
|
24
|
+
gap: 0.5rem;
|
|
25
|
+
transition: all 0.2s ease;
|
|
26
|
+
white-space: nowrap;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.memori-artifact-action-icon{
|
|
30
|
+
width: 16px;
|
|
31
|
+
height: 16px;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.memori-artifact-action-btn:focus {
|
|
35
|
+
outline: 2px solid var(--memori-primary);
|
|
36
|
+
outline-offset: 2px;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.memori-artifact-action-btn:active {
|
|
40
|
+
transform: translateY(0);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.memori-artifact-action-btn:disabled {
|
|
44
|
+
cursor: not-allowed;
|
|
45
|
+
opacity: 0.6;
|
|
46
|
+
transform: none !important;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.memori-artifact-action-btn:focus:not(:focus-visible) {
|
|
50
|
+
outline: none;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.memori-artifact-action-btn:disabled:hover {
|
|
54
|
+
box-shadow: none !important;
|
|
55
|
+
transform: none !important;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.memori-artifact-action-btn:hover:not(.memori-artifact-action-btn--active) {
|
|
59
|
+
background: rgba(0, 123, 255, 0.05);
|
|
60
|
+
color: var(--memori-text-color, #333);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.memori-artifact-action-btn--active {
|
|
64
|
+
background: var(--memori-chat-bubble-bg, #fff);
|
|
65
|
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
66
|
+
color: var(--memori-primary);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.memori-artifact-action-text {
|
|
70
|
+
font-size: 0.75rem;
|
|
71
|
+
font-weight: 500;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* Fullscreen Button Special Styling */
|
|
75
|
+
.memori-artifact-fullscreen-btn {
|
|
76
|
+
position: relative;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.memori-artifact-fullscreen-btn--active {
|
|
80
|
+
border-color: var(--memori-primary) !important;
|
|
81
|
+
background: var(--memori-primary) !important;
|
|
82
|
+
color: var(--memori-primary-text) !important;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
/* Responsive Design */
|
|
87
|
+
@media (max-width: 768px) {
|
|
88
|
+
.memori-artifact-actions {
|
|
89
|
+
gap: 0.25rem;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.memori-artifact-action-btn {
|
|
93
|
+
min-width: 42px;
|
|
94
|
+
min-height: auto;
|
|
95
|
+
justify-content: center;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.memori-artifact-action-text {
|
|
99
|
+
display: none;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.memori-artifact-fullscreen-btn{
|
|
103
|
+
display: none;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@media (max-width: 480px) {
|
|
108
|
+
.memori-artifact-actions {
|
|
109
|
+
flex-flow: row;
|
|
110
|
+
flex-wrap: wrap;
|
|
111
|
+
justify-content: center;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.memori-artifact-action-btn {
|
|
115
|
+
min-width: 0;
|
|
116
|
+
max-width: 3rem;
|
|
117
|
+
flex: 1;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/* Loading State */
|
|
122
|
+
|
|
123
|
+
/* Icon Sizing */
|
|
124
|
+
.memori-artifact-action-btn .memori-button--icon {
|
|
125
|
+
font-size: 1rem;
|
|
126
|
+
line-height: 1;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* Dark Mode Support */
|
|
130
|
+
@media (prefers-color-scheme: dark) {
|
|
131
|
+
.memori-artifact-action-btn:hover {
|
|
132
|
+
box-shadow: 0 2px 8px rgba(255, 255, 255, 0.1);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* Animation for Copy Feedback */
|
|
137
|
+
@keyframes copyFeedback {
|
|
138
|
+
0% {
|
|
139
|
+
opacity: 1;
|
|
140
|
+
transform: scale(1);
|
|
141
|
+
}
|
|
142
|
+
50% {
|
|
143
|
+
opacity: 0.8;
|
|
144
|
+
transform: scale(1.05);
|
|
145
|
+
}
|
|
146
|
+
100% {
|
|
147
|
+
opacity: 1;
|
|
148
|
+
transform: scale(1);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.memori-artifact-action-btn.copied {
|
|
153
|
+
animation: copyFeedback 0.3s ease;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/* Tooltip Support */
|
|
157
|
+
.memori-artifact-action-btn[title] {
|
|
158
|
+
position: relative;
|
|
159
|
+
}
|
|
160
|
+
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const react_i18next_1 = require("react-i18next");
|
|
7
|
+
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
8
|
+
const Button_1 = tslib_1.__importDefault(require("../../../ui/Button"));
|
|
9
|
+
const Download_1 = tslib_1.__importDefault(require("../../../icons/Download"));
|
|
10
|
+
const Link_1 = tslib_1.__importDefault(require("../../../icons/Link"));
|
|
11
|
+
const Fullscreen_1 = tslib_1.__importDefault(require("../../../icons/Fullscreen"));
|
|
12
|
+
const FullscreenExit_1 = tslib_1.__importDefault(require("../../../icons/FullscreenExit"));
|
|
13
|
+
const Print_1 = tslib_1.__importDefault(require("../../../icons/Print"));
|
|
14
|
+
const Copy_1 = tslib_1.__importDefault(require("../../../icons/Copy"));
|
|
15
|
+
const ArtifactActions = ({ artifact, onCopy, onDownload, onPrint, onOpenExternal, onToggleFullscreen, isFullscreen, loading = false, }) => {
|
|
16
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
17
|
+
const [copyFeedback, setCopyFeedback] = (0, react_1.useState)(null);
|
|
18
|
+
const handleCopy = (0, react_1.useCallback)(async () => {
|
|
19
|
+
try {
|
|
20
|
+
await onCopy();
|
|
21
|
+
setCopyFeedback('✅ Copied!');
|
|
22
|
+
setTimeout(() => setCopyFeedback(null), 2000);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
setCopyFeedback('❌ Error');
|
|
26
|
+
setTimeout(() => setCopyFeedback(null), 2000);
|
|
27
|
+
}
|
|
28
|
+
}, [onCopy]);
|
|
29
|
+
const getFileExtension = (0, react_1.useCallback)((mimeType) => {
|
|
30
|
+
const extensions = {
|
|
31
|
+
html: 'html',
|
|
32
|
+
json: 'json',
|
|
33
|
+
markdown: 'md',
|
|
34
|
+
css: 'css',
|
|
35
|
+
javascript: 'js',
|
|
36
|
+
typescript: 'ts',
|
|
37
|
+
svg: 'svg',
|
|
38
|
+
xml: 'xml',
|
|
39
|
+
text: 'txt',
|
|
40
|
+
python: 'py',
|
|
41
|
+
java: 'java',
|
|
42
|
+
cpp: 'cpp',
|
|
43
|
+
csharp: 'cs',
|
|
44
|
+
php: 'php',
|
|
45
|
+
ruby: 'rb',
|
|
46
|
+
go: 'go',
|
|
47
|
+
rust: 'rs',
|
|
48
|
+
yaml: 'yml',
|
|
49
|
+
sql: 'sql',
|
|
50
|
+
};
|
|
51
|
+
return extensions[mimeType] || 'txt';
|
|
52
|
+
}, []);
|
|
53
|
+
const getMimeTypeString = (0, react_1.useCallback)((mimeType) => {
|
|
54
|
+
const mimeTypes = {
|
|
55
|
+
html: 'text/html',
|
|
56
|
+
json: 'application/json',
|
|
57
|
+
markdown: 'text/markdown',
|
|
58
|
+
css: 'text/css',
|
|
59
|
+
javascript: 'text/javascript',
|
|
60
|
+
typescript: 'text/typescript',
|
|
61
|
+
svg: 'image/svg+xml',
|
|
62
|
+
xml: 'text/xml',
|
|
63
|
+
text: 'text/plain',
|
|
64
|
+
python: 'text/x-python',
|
|
65
|
+
java: 'text/x-java',
|
|
66
|
+
cpp: 'text/x-c++',
|
|
67
|
+
csharp: 'text/x-csharp',
|
|
68
|
+
php: 'text/x-php',
|
|
69
|
+
ruby: 'text/x-ruby',
|
|
70
|
+
go: 'text/x-go',
|
|
71
|
+
rust: 'text/x-rust',
|
|
72
|
+
yaml: 'text/yaml',
|
|
73
|
+
sql: 'text/x-sql',
|
|
74
|
+
};
|
|
75
|
+
return mimeTypes[mimeType] || 'text/plain';
|
|
76
|
+
}, []);
|
|
77
|
+
const handleDownload = (0, react_1.useCallback)(() => {
|
|
78
|
+
try {
|
|
79
|
+
const extension = getFileExtension(artifact.mimeType);
|
|
80
|
+
const filename = `artifact-${Date.now()}.${extension}`;
|
|
81
|
+
const mimeType = getMimeTypeString(artifact.mimeType);
|
|
82
|
+
const blob = new Blob([artifact.content], { type: mimeType });
|
|
83
|
+
const url = URL.createObjectURL(blob);
|
|
84
|
+
const a = document.createElement('a');
|
|
85
|
+
a.href = url;
|
|
86
|
+
a.download = filename;
|
|
87
|
+
document.body.appendChild(a);
|
|
88
|
+
a.click();
|
|
89
|
+
document.body.removeChild(a);
|
|
90
|
+
URL.revokeObjectURL(url);
|
|
91
|
+
onDownload();
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.error('Download failed:', error);
|
|
95
|
+
}
|
|
96
|
+
}, [artifact, getFileExtension, getMimeTypeString, onDownload]);
|
|
97
|
+
const handlePrint = (0, react_1.useCallback)(() => {
|
|
98
|
+
try {
|
|
99
|
+
const printWindow = window.open('', '_blank');
|
|
100
|
+
if (!printWindow) {
|
|
101
|
+
alert('Popup blocked! Please enable popups to print the artifact.');
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
let printContent;
|
|
105
|
+
if (artifact.mimeType === 'html') {
|
|
106
|
+
printContent = artifact.content;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
printContent = `
|
|
110
|
+
<!DOCTYPE html>
|
|
111
|
+
<html>
|
|
112
|
+
<head>
|
|
113
|
+
<title>Artifact - ${artifact.mimeType.toUpperCase()}</title>
|
|
114
|
+
<style>
|
|
115
|
+
body {
|
|
116
|
+
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
|
|
117
|
+
white-space: pre-wrap;
|
|
118
|
+
margin: 20px;
|
|
119
|
+
line-height: 1.4;
|
|
120
|
+
}
|
|
121
|
+
@media print {
|
|
122
|
+
body { margin: 0; }
|
|
123
|
+
}
|
|
124
|
+
</style>
|
|
125
|
+
</head>
|
|
126
|
+
<body>${artifact.content.replace(/</g, '<').replace(/>/g, '>')}</body>
|
|
127
|
+
</html>
|
|
128
|
+
`;
|
|
129
|
+
}
|
|
130
|
+
printWindow.document.write(printContent);
|
|
131
|
+
printWindow.document.close();
|
|
132
|
+
setTimeout(() => {
|
|
133
|
+
printWindow.print();
|
|
134
|
+
printWindow.close();
|
|
135
|
+
}, 500);
|
|
136
|
+
onPrint();
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
console.error('Print failed:', error);
|
|
140
|
+
}
|
|
141
|
+
}, [artifact, onPrint]);
|
|
142
|
+
const handleOpenExternal = (0, react_1.useCallback)(() => {
|
|
143
|
+
try {
|
|
144
|
+
const mimeType = getMimeTypeString(artifact.mimeType);
|
|
145
|
+
const blob = new Blob([artifact.content], { type: mimeType });
|
|
146
|
+
const url = URL.createObjectURL(blob);
|
|
147
|
+
const externalWindow = window.open(url, '_blank');
|
|
148
|
+
if (!externalWindow) {
|
|
149
|
+
alert('Popup blocked! Please enable popups to open the artifact in a new window.');
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
setTimeout(() => {
|
|
153
|
+
URL.revokeObjectURL(url);
|
|
154
|
+
}, 60000);
|
|
155
|
+
onOpenExternal();
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
console.error('External open failed:', error);
|
|
159
|
+
}
|
|
160
|
+
}, [artifact, getMimeTypeString, onOpenExternal]);
|
|
161
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "memori-artifact-actions", children: [(0, jsx_runtime_1.jsxs)(Button_1.default, { onClick: handleCopy, disabled: loading, title: t('artifact.copy', 'Copy code') || 'Copy code', className: "memori-artifact-action-btn", ghost: true, children: [(0, jsx_runtime_1.jsx)(Copy_1.default, { className: "memori-artifact-action-icon" }), (0, jsx_runtime_1.jsx)("span", { className: "memori-artifact-action-text", children: copyFeedback || t('artifact.copy', 'Copy') })] }), (0, jsx_runtime_1.jsxs)(Button_1.default, { onClick: handleDownload, disabled: loading, title: t('artifact.download', 'Download artifact') || 'Download artifact', className: "memori-artifact-action-btn", ghost: true, children: [(0, jsx_runtime_1.jsx)(Download_1.default, { className: "memori-artifact-action-icon" }), (0, jsx_runtime_1.jsx)("span", { className: "memori-artifact-action-text", children: t('artifact.download', 'Download') })] }), (0, jsx_runtime_1.jsxs)(Button_1.default, { onClick: handlePrint, disabled: loading, title: t('artifact.print', 'Print artifact') || 'Print artifact', className: "memori-artifact-action-btn", ghost: true, children: [(0, jsx_runtime_1.jsx)(Print_1.default, { className: "memori-artifact-action-icon" }), (0, jsx_runtime_1.jsx)("span", { className: "memori-artifact-action-text", children: t('artifact.print', 'Print') })] }), (0, jsx_runtime_1.jsxs)(Button_1.default, { onClick: handleOpenExternal, disabled: loading, title: t('artifact.external', 'Open in new window') || 'Open in new window', className: "memori-artifact-action-btn", ghost: true, children: [(0, jsx_runtime_1.jsx)(Link_1.default, { className: "memori-artifact-action-icon" }), (0, jsx_runtime_1.jsx)("span", { className: "memori-artifact-action-text", children: t('artifact.external', 'External') })] }), (0, jsx_runtime_1.jsxs)(Button_1.default, { onClick: onToggleFullscreen, disabled: loading, title: isFullscreen ? (t('artifact.exitFullscreen', 'Exit fullscreen') || 'Exit fullscreen') : (t('artifact.fullscreen', 'Fullscreen') || 'Fullscreen'), className: (0, classnames_1.default)('memori-artifact-action-btn', 'memori-artifact-fullscreen-btn', {
|
|
162
|
+
'memori-artifact-fullscreen-btn--active': isFullscreen,
|
|
163
|
+
}), primary: isFullscreen, ghost: !isFullscreen, children: [isFullscreen ? (0, jsx_runtime_1.jsx)(Fullscreen_1.default, { className: "memori-artifact-action-icon" }) : (0, jsx_runtime_1.jsx)(FullscreenExit_1.default, { className: "memori-artifact-action-icon" }), (0, jsx_runtime_1.jsx)("span", { className: "memori-artifact-action-text", children: isFullscreen ? t('artifact.exitFullscreen', 'Exit') : t('artifact.fullscreen', 'Full') })] })] }));
|
|
164
|
+
};
|
|
165
|
+
exports.default = ArtifactActions;
|
|
166
|
+
//# sourceMappingURL=ArtifactActions.js.map
|
package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArtifactActions.js","sourceRoot":"","sources":["../../../../../src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx"],"names":[],"mappings":"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"}
|