@yadsh/dsh-qa-surface 0.3.0 → 0.4.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/README.md +153 -12
- package/lib/account-remotes.js +100 -0
- package/lib/account-remotes.js.map +1 -0
- package/lib/accounts/credentials.js +27 -0
- package/lib/accounts/credentials.js.map +1 -0
- package/lib/accounts/errors.js +9 -0
- package/lib/accounts/errors.js.map +1 -0
- package/lib/accounts/file.js +101 -0
- package/lib/accounts/file.js.map +1 -0
- package/lib/accounts/store.js +144 -161
- package/lib/accounts/store.js.map +1 -1
- package/lib/accounts/token.js +61 -0
- package/lib/accounts/token.js.map +1 -0
- package/lib/attachment-rules.js +111 -0
- package/lib/attachment-rules.js.map +1 -0
- package/lib/cli.js +122 -9
- package/lib/cli.js.map +1 -1
- package/lib/client/QaAccountsController.js +32 -2
- package/lib/client/QaAccountsController.js.map +1 -1
- package/lib/client/QaSessionController.js +47 -65
- package/lib/client/QaSessionController.js.map +1 -1
- package/lib/client/QaSurface.js +121 -107
- package/lib/client/QaSurface.js.map +1 -1
- package/lib/client/QaTranscriptAdapter.js +71 -6
- package/lib/client/QaTranscriptAdapter.js.map +1 -1
- package/lib/client/attachments.js +150 -0
- package/lib/client/attachments.js.map +1 -0
- package/lib/client/attestation.js +1 -1
- package/lib/client/attestation.js.map +1 -1
- package/lib/client/base64.js +16 -0
- package/lib/client/base64.js.map +1 -0
- package/lib/client/chat-files.js +48 -0
- package/lib/client/chat-files.js.map +1 -0
- package/lib/client/components/Markdown.js +1 -1
- package/lib/client/components/Markdown.js.map +1 -1
- package/lib/client/components/QaChangelog.js +38 -19
- package/lib/client/components/QaChangelog.js.map +1 -1
- package/lib/client/components/QaComposer.js +56 -74
- package/lib/client/components/QaComposer.js.map +1 -1
- package/lib/client/components/QaFileAttachment.js +19 -0
- package/lib/client/components/QaFileAttachment.js.map +1 -0
- package/lib/client/components/QaFilesPanel.js +45 -0
- package/lib/client/components/QaFilesPanel.js.map +1 -0
- package/lib/client/components/QaHeader.js +34 -0
- package/lib/client/components/QaHeader.js.map +1 -0
- package/lib/client/components/QaMessage.js +17 -4
- package/lib/client/components/QaMessage.js.map +1 -1
- package/lib/client/components/QaModal.js +31 -0
- package/lib/client/components/QaModal.js.map +1 -0
- package/lib/client/components/QaProfile.js +64 -0
- package/lib/client/components/QaProfile.js.map +1 -0
- package/lib/client/components/QaRightRail.js +15 -0
- package/lib/client/components/QaRightRail.js.map +1 -0
- package/lib/client/components/QaSidebar.js +6 -1
- package/lib/client/components/QaSidebar.js.map +1 -1
- package/lib/client/components/{QaSourcesDrawer.js → QaSourcesPanel.js} +3 -3
- package/lib/client/components/QaSourcesPanel.js.map +1 -0
- package/lib/client/components/QaTurnRail.js +15 -0
- package/lib/client/components/QaTurnRail.js.map +1 -1
- package/lib/client/components/QaWidthHandle.js +25 -20
- package/lib/client/components/QaWidthHandle.js.map +1 -1
- package/lib/client/components/QaWorkGroup.js +19 -20
- package/lib/client/components/QaWorkGroup.js.map +1 -1
- package/lib/client/components/surface-utils.js +28 -0
- package/lib/client/components/surface-utils.js.map +1 -0
- package/lib/client/components/thinking-phrases.js +24 -0
- package/lib/client/components/thinking-phrases.js.map +1 -0
- package/lib/client/create-session.js +7 -32
- package/lib/client/create-session.js.map +1 -1
- package/lib/client/failure-copy.js +63 -0
- package/lib/client/failure-copy.js.map +1 -0
- package/lib/client/index.js +38 -7
- package/lib/client/index.js.map +1 -1
- package/lib/client/prompt-content.js +54 -0
- package/lib/client/prompt-content.js.map +1 -0
- package/lib/client/settings/card.js +143 -0
- package/lib/client/settings/card.js.map +1 -0
- package/lib/client/settings/fields.js +145 -0
- package/lib/client/settings/fields.js.map +1 -0
- package/lib/client/settings/format.js +255 -0
- package/lib/client/settings/format.js.map +1 -0
- package/lib/client/settings/sections/access.js +25 -0
- package/lib/client/settings/sections/access.js.map +1 -0
- package/lib/client/settings/sections/accounts.js +47 -0
- package/lib/client/settings/sections/accounts.js.map +1 -0
- package/lib/client/settings/sections/attachments.js +46 -0
- package/lib/client/settings/sections/attachments.js.map +1 -0
- package/lib/client/settings/sections/branding.js +28 -0
- package/lib/client/settings/sections/branding.js.map +1 -0
- package/lib/client/settings/sections/common.js +20 -0
- package/lib/client/settings/sections/common.js.map +1 -0
- package/lib/client/settings/sections/embedding.js +19 -0
- package/lib/client/settings/sections/embedding.js.map +1 -0
- package/lib/client/settings/sections/interface.js +60 -0
- package/lib/client/settings/sections/interface.js.map +1 -0
- package/lib/client/settings/sections/lockdown.js +82 -0
- package/lib/client/settings/sections/lockdown.js.map +1 -0
- package/lib/client/settings/sections/session.js +53 -0
- package/lib/client/settings/sections/session.js.map +1 -0
- package/lib/client/settings/sections/sources.js +72 -0
- package/lib/client/settings/sections/sources.js.map +1 -0
- package/lib/client/settings/sections/status.js +37 -0
- package/lib/client/settings/sections/status.js.map +1 -0
- package/lib/client/settings/sections.js +23 -0
- package/lib/client/settings/sections.js.map +1 -0
- package/lib/client/settings/styles.js +57 -0
- package/lib/client/settings/styles.js.map +1 -0
- package/lib/client/stream-publisher.js +47 -0
- package/lib/client/stream-publisher.js.map +1 -0
- package/lib/client/styles.js +85 -19
- package/lib/client/styles.js.map +1 -1
- package/lib/client/types.js.map +1 -1
- package/lib/client/use-right-rail.js +96 -0
- package/lib/client/use-right-rail.js.map +1 -0
- package/lib/client/use-session-ui-state.js +26 -19
- package/lib/client/use-session-ui-state.js.map +1 -1
- package/lib/client.js +4788 -869
- package/lib/client.js.map +1 -1
- package/lib/config-resolvers/accounts.js +60 -0
- package/lib/config-resolvers/accounts.js.map +1 -0
- package/lib/config-resolvers/attachments.js +28 -0
- package/lib/config-resolvers/attachments.js.map +1 -0
- package/lib/config-resolvers/basics.js +59 -0
- package/lib/config-resolvers/basics.js.map +1 -0
- package/lib/config-resolvers/defaults.js +132 -0
- package/lib/config-resolvers/defaults.js.map +1 -0
- package/lib/config-resolvers/lockdown.js +79 -0
- package/lib/config-resolvers/lockdown.js.map +1 -0
- package/lib/config-resolvers/session.js +42 -0
- package/lib/config-resolvers/session.js.map +1 -0
- package/lib/config-resolvers/shared.js +42 -0
- package/lib/config-resolvers/shared.js.map +1 -0
- package/lib/config-resolvers/sources.js +81 -0
- package/lib/config-resolvers/sources.js.map +1 -0
- package/lib/config-resolvers/ui.js +20 -0
- package/lib/config-resolvers/ui.js.map +1 -0
- package/lib/config.js +65 -4
- package/lib/config.js.map +1 -1
- package/lib/entry-redirect.js +2 -1
- package/lib/entry-redirect.js.map +1 -1
- package/lib/index.js +123 -74
- package/lib/index.js.map +1 -1
- package/lib/profile.js +214 -0
- package/lib/profile.js.map +1 -0
- package/lib/prompt-notes.js +231 -0
- package/lib/prompt-notes.js.map +1 -0
- package/lib/resolve-config.js +35 -410
- package/lib/resolve-config.js.map +1 -1
- package/lib/secure-session.js +82 -16
- package/lib/secure-session.js.map +1 -1
- package/lib/shared/session-key.js +18 -0
- package/lib/shared/session-key.js.map +1 -0
- package/lib/shared/settings.js +10 -0
- package/lib/shared/settings.js.map +1 -0
- package/lib/thinking-phrases.js +68 -0
- package/lib/thinking-phrases.js.map +1 -0
- package/lib/typert.host.js +162 -17
- package/lib/typert.remote-client.d.ts +5 -1
- package/lib/typert.remote-client.js +132 -13
- package/lib/types/account-remotes.d.ts +42 -0
- package/lib/types/accounts/credentials.d.ts +14 -0
- package/lib/types/accounts/errors.d.ts +11 -0
- package/lib/types/accounts/file.d.ts +82 -0
- package/lib/types/accounts/store.d.ts +66 -43
- package/lib/types/accounts/token.d.ts +31 -0
- package/lib/types/attachment-rules.d.ts +44 -0
- package/lib/types/cli.d.ts +2 -2
- package/lib/types/client/QaAccountsController.d.ts +8 -1
- package/lib/types/client/QaSessionController.d.ts +16 -16
- package/lib/types/client/QaSurface.d.ts +7 -1
- package/lib/types/client/attachments.d.ts +54 -0
- package/lib/types/client/base64.d.ts +10 -0
- package/lib/types/client/chat-files.d.ts +30 -0
- package/lib/types/client/components/QaChangelog.d.ts +1 -1
- package/lib/types/client/components/QaComposer.d.ts +8 -4
- package/lib/types/client/components/QaFileAttachment.d.ts +14 -0
- package/lib/types/client/components/QaFilesPanel.d.ts +15 -0
- package/lib/types/client/components/QaHeader.d.ts +41 -0
- package/lib/types/client/components/QaMessage.d.ts +3 -1
- package/lib/types/client/components/QaModal.d.ts +26 -0
- package/lib/types/client/components/QaProfile.d.ts +25 -0
- package/lib/types/client/components/QaRightRail.d.ts +23 -0
- package/lib/types/client/components/QaSidebar.d.ts +14 -0
- package/lib/types/client/components/{QaSourcesDrawer.d.ts → QaSourcesPanel.d.ts} +7 -4
- package/lib/types/client/components/QaTurnRail.d.ts +6 -0
- package/lib/types/client/components/QaWidthHandle.d.ts +14 -7
- package/lib/types/client/components/QaWorkGroup.d.ts +5 -3
- package/lib/types/client/components/surface-utils.d.ts +11 -0
- package/lib/types/client/components/thinking-phrases.d.ts +9 -0
- package/lib/types/client/create-session.d.ts +6 -9
- package/lib/types/client/failure-copy.d.ts +19 -0
- package/lib/types/client/prompt-content.d.ts +30 -0
- package/lib/types/client/settings/card.d.ts +23 -0
- package/lib/types/client/settings/fields.d.ts +139 -0
- package/lib/types/client/settings/format.d.ts +108 -0
- package/lib/types/client/settings/sections/access.d.ts +9 -0
- package/lib/types/client/settings/sections/accounts.d.ts +9 -0
- package/lib/types/client/settings/sections/attachments.d.ts +15 -0
- package/lib/types/client/settings/sections/branding.d.ts +8 -0
- package/lib/types/client/settings/sections/common.d.ts +28 -0
- package/lib/types/client/settings/sections/embedding.d.ts +8 -0
- package/lib/types/client/settings/sections/interface.d.ts +9 -0
- package/lib/types/client/settings/sections/lockdown.d.ts +9 -0
- package/lib/types/client/settings/sections/session.d.ts +9 -0
- package/lib/types/client/settings/sections/sources.d.ts +9 -0
- package/lib/types/client/settings/sections/status.d.ts +22 -0
- package/lib/types/client/settings/sections.d.ts +25 -0
- package/lib/types/client/settings/styles.d.ts +8 -0
- package/lib/types/client/stream-publisher.d.ts +28 -0
- package/lib/types/client/types.d.ts +29 -1
- package/lib/types/client/use-right-rail.d.ts +56 -0
- package/lib/types/client/use-session-ui-state.d.ts +13 -7
- package/lib/types/config-resolvers/accounts.d.ts +15 -0
- package/lib/types/config-resolvers/attachments.d.ts +6 -0
- package/lib/types/config-resolvers/basics.d.ts +8 -0
- package/lib/types/config-resolvers/defaults.d.ts +4 -0
- package/lib/types/config-resolvers/lockdown.d.ts +10 -0
- package/lib/types/config-resolvers/session.d.ts +6 -0
- package/lib/types/config-resolvers/shared.d.ts +16 -0
- package/lib/types/config-resolvers/sources.d.ts +6 -0
- package/lib/types/config-resolvers/ui.d.ts +6 -0
- package/lib/types/index.d.ts +20 -13
- package/lib/types/profile.d.ts +76 -0
- package/lib/types/prompt-notes.d.ts +110 -0
- package/lib/types/resolve-config.d.ts +8 -3
- package/lib/types/secure-session.d.ts +26 -1
- package/lib/types/shared/session-key.d.ts +23 -0
- package/lib/types/shared/settings.d.ts +10 -0
- package/lib/types/thinking-phrases.d.ts +17 -0
- package/lib/types/types.d.ts +123 -5
- package/lib/types/user-workspace.d.ts +38 -0
- package/lib/user-workspace.js +231 -0
- package/lib/user-workspace.js.map +1 -0
- package/package.json +14 -7
- package/CHANGELOG.md +0 -176
- package/SPEC-dsh-qa-surface.md +0 -2425
- package/docs/ARCHITECTURE.md +0 -66
- package/docs/COMPATIBILITY.md +0 -14
- package/docs/CONFIGURATION.md +0 -199
- package/docs/EMBEDDING.md +0 -13
- package/docs/SOURCES-MIGRATION.md +0 -28
- package/docs/SOURCES-PROVENANCE-AUDIT.md +0 -88
- package/docs/SPEC-dsh-qa-surface-accounts.md +0 -219
- package/docs/SPEC-dsh-qa-surface-sources-provenance.md +0 -1692
- package/lib/client/components/QaSourcesDrawer.js.map +0 -1
|
@@ -1,58 +1,15 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { memo, useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"
|
|
7
|
-
"image/webp",
|
|
8
|
-
"image/gif",
|
|
9
|
-
];
|
|
10
|
-
/** Soft client-side caps; the Host stays authoritative at admission. */
|
|
11
|
-
const MAX_IMAGES = 8;
|
|
12
|
-
const MAX_FILE_BYTES = 15 * 1024 * 1024;
|
|
13
|
-
let imageDraftSequence = 0;
|
|
14
|
-
function bytesToBase64(bytes) {
|
|
15
|
-
let binary = "";
|
|
16
|
-
for (let index = 0; index < bytes.length; index += 0x8000) {
|
|
17
|
-
binary += String.fromCharCode(...bytes.subarray(index, index + 0x8000));
|
|
18
|
-
}
|
|
19
|
-
return btoa(binary);
|
|
20
|
-
}
|
|
21
|
-
/** FileReader covers runtimes without File.arrayBuffer (jsdom). */
|
|
22
|
-
function readAsArrayBuffer(file) {
|
|
23
|
-
if (typeof file.arrayBuffer === "function")
|
|
24
|
-
return file.arrayBuffer();
|
|
25
|
-
return new Promise((resolve, reject) => {
|
|
26
|
-
const reader = new FileReader();
|
|
27
|
-
reader.onload = () => resolve(reader.result);
|
|
28
|
-
reader.onerror = () => reject(reader.error ?? new Error("read failed"));
|
|
29
|
-
reader.readAsArrayBuffer(file);
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
async function fileToImageDraft(file) {
|
|
33
|
-
if (!IMAGE_MEDIA_TYPES.includes(file.type)) {
|
|
34
|
-
return "Поддерживаются изображения PNG, JPEG, WebP и GIF.";
|
|
35
|
-
}
|
|
36
|
-
if (file.size > MAX_FILE_BYTES) {
|
|
37
|
-
return "Изображение слишком большое (лимит 15 МБ).";
|
|
38
|
-
}
|
|
39
|
-
const data = bytesToBase64(new Uint8Array(await readAsArrayBuffer(file)));
|
|
40
|
-
imageDraftSequence += 1;
|
|
41
|
-
return {
|
|
42
|
-
id: `image-${imageDraftSequence}`,
|
|
43
|
-
mediaType: file.type,
|
|
44
|
-
name: file.name === "" ? "изображение" : file.name,
|
|
45
|
-
data,
|
|
46
|
-
previewUrl: URL.createObjectURL(file),
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
function ImagePickerIcon() {
|
|
50
|
-
return (_jsxs("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: [_jsx("rect", { x: "2.5", y: "3.5", width: "13", height: "11", rx: "2" }), _jsx("circle", { cx: "6.4", cy: "7.4", r: "1.3" }), _jsx("path", { d: "m4 13 3.6-3.6 2 2L12.4 8l2.6 2.6" })] }));
|
|
3
|
+
import { attachmentAccept, draftFromFile, draftFromPaste, } from "../attachments.js";
|
|
4
|
+
import { QaFileAttachment } from "./QaFileAttachment.js";
|
|
5
|
+
function AttachIcon() {
|
|
6
|
+
return (_jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "M16.08 8.29 9.19 15.18a4.5 4.5 0 0 1-6.37-6.37l6.89-6.89a3 3 0 0 1 4.25 4.25l-6.9 6.89a1.5 1.5 0 0 1-2.12-2.12l6.37-6.36" }) }));
|
|
51
7
|
}
|
|
52
8
|
/**
|
|
53
9
|
* Memoized with the default shallow compare: every prop is a scalar, a
|
|
54
10
|
* stable array or a stable callback, so a stream of transcript frames never
|
|
55
11
|
* re-renders the composer and typing stays responsive while an answer runs.
|
|
12
|
+
* The caller owns the draft array identity: `limits` must be stable too.
|
|
56
13
|
*/
|
|
57
14
|
export const QaComposer = memo(function QaComposer(props) {
|
|
58
15
|
const [draft, setDraft] = useState("");
|
|
@@ -61,21 +18,24 @@ export const QaComposer = memo(function QaComposer(props) {
|
|
|
61
18
|
const [attachmentError, setAttachmentError] = useState(null);
|
|
62
19
|
const textarea = useRef(null);
|
|
63
20
|
const fileInput = useRef(null);
|
|
64
|
-
const
|
|
21
|
+
const attachments = props.attachments;
|
|
22
|
+
const limits = props.limits;
|
|
23
|
+
const images = attachments.filter((item) => item.kind === "image");
|
|
24
|
+
const files = attachments.filter((item) => item.kind === "file");
|
|
25
|
+
const remove = (id) => {
|
|
26
|
+
props.onAttachmentsChange(attachments.filter((candidate) => candidate.id !== id));
|
|
27
|
+
};
|
|
65
28
|
const send = async (textOverride) => {
|
|
66
29
|
const text = textOverride ?? draft;
|
|
67
30
|
if (submitting || !props.canSend)
|
|
68
31
|
return;
|
|
69
|
-
if (text.trim() === "" &&
|
|
32
|
+
if (text.trim() === "" && attachments.length === 0)
|
|
70
33
|
return;
|
|
71
34
|
setSubmitting(true);
|
|
72
35
|
try {
|
|
73
|
-
if (await props.onSend(text,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
else
|
|
77
|
-
setDraft("");
|
|
78
|
-
props.onImagesChange([]);
|
|
36
|
+
if (await props.onSend(text, attachments)) {
|
|
37
|
+
setDraft("");
|
|
38
|
+
props.onAttachmentsChange([]);
|
|
79
39
|
}
|
|
80
40
|
}
|
|
81
41
|
finally {
|
|
@@ -83,29 +43,28 @@ export const QaComposer = memo(function QaComposer(props) {
|
|
|
83
43
|
textarea.current?.focus();
|
|
84
44
|
}
|
|
85
45
|
};
|
|
86
|
-
const addFiles = async (
|
|
87
|
-
const incoming = [...files];
|
|
46
|
+
const addFiles = async (incoming) => {
|
|
88
47
|
if (incoming.length === 0)
|
|
89
48
|
return;
|
|
90
49
|
setAttachmentError(null);
|
|
91
|
-
const room =
|
|
50
|
+
const room = limits.maxPending - attachments.length;
|
|
92
51
|
if (room <= 0) {
|
|
93
|
-
setAttachmentError(`Не больше ${
|
|
52
|
+
setAttachmentError(`Не больше ${String(limits.maxPending)} вложений на сообщение.`);
|
|
94
53
|
return;
|
|
95
54
|
}
|
|
96
55
|
const drafts = [];
|
|
97
56
|
let error = incoming.length > room
|
|
98
|
-
? `Не больше ${
|
|
57
|
+
? `Не больше ${String(limits.maxPending)} вложений на сообщение.`
|
|
99
58
|
: null;
|
|
100
|
-
for (const file of incoming.slice(0,
|
|
101
|
-
const draft = await
|
|
59
|
+
for (const file of incoming.slice(0, room)) {
|
|
60
|
+
const draft = await draftFromFile(file, limits);
|
|
102
61
|
if (typeof draft === "string")
|
|
103
62
|
error = draft;
|
|
104
63
|
else
|
|
105
64
|
drafts.push(draft);
|
|
106
65
|
}
|
|
107
66
|
if (drafts.length > 0)
|
|
108
|
-
props.
|
|
67
|
+
props.onAttachmentsChange([...attachments, ...drafts]);
|
|
109
68
|
setAttachmentError(error);
|
|
110
69
|
};
|
|
111
70
|
useEffect(() => {
|
|
@@ -117,9 +76,12 @@ export const QaComposer = memo(function QaComposer(props) {
|
|
|
117
76
|
if (element === null)
|
|
118
77
|
return;
|
|
119
78
|
element.style.height = "0px";
|
|
120
|
-
element.style.height = `${Math.min(element.scrollHeight, 168)}px`;
|
|
79
|
+
element.style.height = `${String(Math.min(element.scrollHeight, 168))}px`;
|
|
121
80
|
}, [draft]);
|
|
122
|
-
const hasContent = draft.trim() !== "" ||
|
|
81
|
+
const hasContent = draft.trim() !== "" || attachments.length > 0;
|
|
82
|
+
const hint = submitting && files.length > 0
|
|
83
|
+
? "Отправляю вложения…"
|
|
84
|
+
: (props.status ?? "Enter: отправить, Shift+Enter: новая строка");
|
|
123
85
|
return (_jsxs("div", { className: dragOver
|
|
124
86
|
? "dsh-qa-composer-wrap dsh-qa-composer-wrap--drag"
|
|
125
87
|
: "dsh-qa-composer-wrap", onDragOver: (event) => {
|
|
@@ -128,13 +90,33 @@ export const QaComposer = memo(function QaComposer(props) {
|
|
|
128
90
|
}, onDragLeave: () => setDragOver(false), onDrop: (event) => {
|
|
129
91
|
event.preventDefault();
|
|
130
92
|
setDragOver(false);
|
|
131
|
-
void addFiles(event.dataTransfer.files);
|
|
132
|
-
}, children: [(props.quickQuestions?.length ?? 0) > 0 ? (_jsx("div", { className: "dsh-qa-quick-questions", "aria-label": "\u0411\u044B\u0441\u0442\u0440\u044B\u0435 \u0432\u043E\u043F\u0440\u043E\u0441\u044B", children: props.quickQuestions?.map((question) => (_jsx("button", { type: "button", disabled: !props.canSend || submitting, onClick: () => void send(question), children: question }, question))) })) : null, _jsxs("div", { className: "dsh-qa-composer", children: [
|
|
133
|
-
|
|
134
|
-
|
|
93
|
+
void addFiles([...event.dataTransfer.files]);
|
|
94
|
+
}, children: [(props.quickQuestions?.length ?? 0) > 0 ? (_jsx("div", { className: "dsh-qa-quick-questions", "aria-label": "\u0411\u044B\u0441\u0442\u0440\u044B\u0435 \u0432\u043E\u043F\u0440\u043E\u0441\u044B", children: props.quickQuestions?.map((question) => (_jsx("button", { type: "button", disabled: !props.canSend || submitting, onClick: () => void send(question), children: question }, question))) })) : null, _jsxs("div", { className: "dsh-qa-composer", children: [files.length === 0 ? null : (_jsx("div", { className: "dsh-qa-composer__files", "aria-label": "\u041F\u0440\u0438\u043A\u0440\u0435\u043F\u043B\u0451\u043D\u043D\u044B\u0435 \u0444\u0430\u0439\u043B\u044B", children: files.map((file) => (_jsx(QaFileAttachment, { name: file.name, bytes: file.bytes, tone: "draft", onRemove: () => {
|
|
95
|
+
remove(file.id);
|
|
96
|
+
} }, file.id))) })), images.length === 0 ? null : (_jsx("div", { className: "dsh-qa-composer__images", "aria-label": "\u041F\u0440\u0438\u043A\u0440\u0435\u043F\u043B\u0451\u043D\u043D\u044B\u0435 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F", children: images.map((image) => (_jsxs("span", { className: "dsh-qa-composer__image", children: [_jsx("img", { src: image.previewUrl, alt: image.name }), _jsx("button", { type: "button", "aria-label": `Убрать ${image.name}`, title: "\u0423\u0431\u0440\u0430\u0442\u044C", onClick: () => {
|
|
97
|
+
remove(image.id);
|
|
98
|
+
}, children: _jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: _jsx("path", { d: "m4 4 8 8m0-8-8 8" }) }) })] }, image.id))) })), attachmentError === null ? null : (_jsx("p", { className: "dsh-qa-composer__attachment-error", role: "alert", children: attachmentError })), _jsx("label", { className: "dsh-qa-sr-only", htmlFor: "dsh-qa-prompt", children: "\u0417\u0430\u0434\u0430\u0442\u044C \u0432\u043E\u043F\u0440\u043E\u0441" }), _jsx("textarea", { ref: textarea, id: "dsh-qa-prompt", rows: 1, value: draft, placeholder: props.placeholder, disabled: !props.canSend && !props.running, onChange: (event) => setDraft(event.currentTarget.value), onPaste: (event) => {
|
|
99
|
+
const pasted = [...(event.clipboardData?.files ?? [])];
|
|
100
|
+
if (pasted.length > 0) {
|
|
135
101
|
event.preventDefault();
|
|
136
|
-
void addFiles(
|
|
102
|
+
void addFiles(pasted);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// A long paste becomes an attachment instead of a wall of text in
|
|
106
|
+
// the field; everything shorter pastes normally.
|
|
107
|
+
const text = event.clipboardData?.getData("text/plain") ?? "";
|
|
108
|
+
const attachment = draftFromPaste(text, limits);
|
|
109
|
+
if (attachment === null)
|
|
110
|
+
return;
|
|
111
|
+
if (attachments.length >= limits.maxPending) {
|
|
112
|
+
// Nothing is swallowed: the text still lands in the field. The
|
|
113
|
+
// room refusal rides the same alert line as a rejected file.
|
|
114
|
+
setAttachmentError(`Не больше ${String(limits.maxPending)} вложений на сообщение.`);
|
|
115
|
+
return;
|
|
137
116
|
}
|
|
117
|
+
event.preventDefault();
|
|
118
|
+
setAttachmentError(null);
|
|
119
|
+
props.onAttachmentsChange([...attachments, attachment]);
|
|
138
120
|
}, onKeyDown: (event) => {
|
|
139
121
|
if (event.key === "Enter" &&
|
|
140
122
|
!event.shiftKey &&
|
|
@@ -142,9 +124,9 @@ export const QaComposer = memo(function QaComposer(props) {
|
|
|
142
124
|
event.preventDefault();
|
|
143
125
|
void send();
|
|
144
126
|
}
|
|
145
|
-
} }), _jsxs("div", { className: "dsh-qa-composer__toolbar", children: [_jsx("input", { ref: fileInput, type: "file", accept:
|
|
146
|
-
void addFiles(event.target.files ?? []);
|
|
127
|
+
} }), _jsxs("div", { className: "dsh-qa-composer__toolbar", children: [_jsx("input", { ref: fileInput, type: "file", accept: attachmentAccept(limits), multiple: true, className: "dsh-qa-sr-only", tabIndex: -1, "aria-hidden": "true", onChange: (event) => {
|
|
128
|
+
void addFiles([...(event.target.files ?? [])]);
|
|
147
129
|
event.target.value = "";
|
|
148
|
-
} }), _jsx("button", { type: "button", className: "dsh-qa-composer__attach", "aria-label": "\u041F\u0440\u0438\u043A\u0440\u0435\u043F\u0438\u0442\u044C \
|
|
130
|
+
} }), _jsx("button", { type: "button", className: "dsh-qa-composer__attach", "aria-label": "\u041F\u0440\u0438\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0444\u0430\u0439\u043B", title: "\u041F\u0440\u0438\u043A\u0440\u0435\u043F\u0438\u0442\u044C \u0444\u0430\u0439\u043B \u0438\u043B\u0438 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435", disabled: !props.canSend || attachments.length >= limits.maxPending, onClick: () => fileInput.current?.click(), children: _jsx(AttachIcon, {}) }), _jsx("span", { className: "dsh-qa-composer__hint", "aria-live": "polite", children: hint }), props.running && props.showStop ? (_jsx("button", { type: "button", className: "dsh-qa-composer__action dsh-qa-composer__action--stop", "aria-label": "\u041E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C", title: "\u041E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C", disabled: !props.canStop, onClick: () => void props.onStop(), children: _jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("rect", { x: "5.25", y: "5.25", width: "7.5", height: "7.5", rx: "1.5" }) }) })) : (_jsx("button", { type: "button", className: "dsh-qa-composer__action dsh-qa-composer__action--send", "aria-label": "\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C", title: "\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C", disabled: !props.canSend || submitting || !hasContent, onClick: () => void send(), children: _jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "M9 13.5v-9m0 0L5.5 8M9 4.5 12.5 8" }) }) }))] })] })] }));
|
|
149
131
|
});
|
|
150
132
|
//# sourceMappingURL=QaComposer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QaComposer.js","sourceRoot":"","sources":["../../../src/client/components/QaComposer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"QaComposer.js","sourceRoot":"","sources":["../../../src/client/components/QaComposer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { formatFileSize } from "../attachments.js";
|
|
3
|
+
/** Uppercase extension badge; a name without one falls back to a paper glyph. */
|
|
4
|
+
function badgeText(name) {
|
|
5
|
+
const dot = name.lastIndexOf(".");
|
|
6
|
+
const extension = dot <= 0 ? "" : name.slice(dot + 1);
|
|
7
|
+
return extension.length > 0 && extension.length <= 4
|
|
8
|
+
? extension.toUpperCase()
|
|
9
|
+
: "FILE";
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* One attached file: the extension badge, the name and the size. The browser
|
|
13
|
+
* never re-reads these bytes (the Host attachment route serves images), so
|
|
14
|
+
* both the composer card and the sent row show the same handle.
|
|
15
|
+
*/
|
|
16
|
+
export function QaFileAttachment({ name, bytes, tone, onRemove, }) {
|
|
17
|
+
return (_jsxs("span", { className: "dsh-qa-file", "data-tone": tone, title: name, children: [_jsx("span", { className: "dsh-qa-file__badge", "aria-hidden": "true", children: badgeText(name) }), _jsxs("span", { className: "dsh-qa-file__text", children: [_jsx("span", { className: "dsh-qa-file__name", children: name }), _jsx("span", { className: "dsh-qa-file__meta", children: formatFileSize(bytes) })] }), onRemove === undefined ? null : (_jsx("button", { type: "button", "aria-label": `Убрать ${name}`, title: "\u0423\u0431\u0440\u0430\u0442\u044C", onClick: onRemove, children: _jsx("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: _jsx("path", { d: "m4 4 8 8m0-8-8 8" }) }) }))] }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=QaFileAttachment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QaFileAttachment.js","sourceRoot":"","sources":["../../../src/client/components/QaFileAttachment.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,iFAAiF;AACjF,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACtD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC;QAClD,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;QACzB,CAAC,CAAC,MAAM,CAAC;AACb,CAAC;AAUD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,QAAQ,GACc;IACtB,OAAO,CACL,gBAAM,SAAS,EAAC,aAAa,eAAY,IAAI,EAAE,KAAK,EAAE,IAAI,aACxD,eAAM,SAAS,EAAC,oBAAoB,iBAAa,MAAM,YACpD,SAAS,CAAC,IAAI,CAAC,GACX,EACP,gBAAM,SAAS,EAAC,mBAAmB,aACjC,eAAM,SAAS,EAAC,mBAAmB,YAAE,IAAI,GAAQ,EACjD,eAAM,SAAS,EAAC,mBAAmB,YAAE,cAAc,CAAC,KAAK,CAAC,GAAQ,IAC7D,EACN,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC/B,iBACE,IAAI,EAAC,QAAQ,gBACD,UAAU,IAAI,EAAE,EAC5B,KAAK,EAAC,sCAAQ,EACd,OAAO,EAAE,QAAQ,YAEjB,cAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,YACzC,eAAM,CAAC,EAAC,kBAAkB,GAAG,GACzB,GACC,CACV,IACI,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { formatDayTime } from "./format.js";
|
|
4
|
+
import { QaFileAttachment } from "./QaFileAttachment.js";
|
|
5
|
+
/** One attachment thumbnail, resolved through the controller's asset store. */
|
|
6
|
+
function QaFileImage({ image, resolve, }) {
|
|
7
|
+
const [url, setUrl] = useState(null);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
let alive = true;
|
|
10
|
+
resolve(image.attachmentId).then((resolved) => {
|
|
11
|
+
if (alive)
|
|
12
|
+
setUrl(resolved);
|
|
13
|
+
}, () => {
|
|
14
|
+
if (alive)
|
|
15
|
+
setUrl("");
|
|
16
|
+
});
|
|
17
|
+
return () => {
|
|
18
|
+
alive = false;
|
|
19
|
+
};
|
|
20
|
+
}, [image.attachmentId, resolve]);
|
|
21
|
+
if (url === null) {
|
|
22
|
+
return _jsx("span", { className: "dsh-qa-files__thumb", "data-state": "loading" });
|
|
23
|
+
}
|
|
24
|
+
if (url === "") {
|
|
25
|
+
return _jsx("span", { className: "dsh-qa-files__thumb", "data-state": "broken" });
|
|
26
|
+
}
|
|
27
|
+
return (_jsx("a", { href: url, target: "_blank", rel: "noreferrer", children: _jsx("img", { className: "dsh-qa-files__thumb", src: url, alt: "\u041F\u0440\u0438\u043A\u0440\u0435\u043F\u043B\u0451\u043D\u043D\u043E\u0435 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435" }) }));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The chat's attachment roster: one section per sending message, newest
|
|
31
|
+
* first. Rows mirror the transcript's handles — the browser never reads a
|
|
32
|
+
* file back, and the images are the same object URLs the message showed.
|
|
33
|
+
*/
|
|
34
|
+
export function QaFilesPanel({ groups, resolveImage, onJumpToMessage, }) {
|
|
35
|
+
if (groups.length === 0) {
|
|
36
|
+
return (_jsx("div", { className: "dsh-qa-files", children: _jsx("p", { className: "dsh-qa-files__empty", children: "\u0412 \u044D\u0442\u043E\u043C \u0447\u0430\u0442\u0435 \u043D\u0435\u0442 \u0432\u043B\u043E\u0436\u0435\u043D\u0438\u0439." }) }));
|
|
37
|
+
}
|
|
38
|
+
return (_jsx("div", { className: "dsh-qa-files", children: groups.map((group) => {
|
|
39
|
+
const time = group.timestamp === undefined
|
|
40
|
+
? "Вложенные файлы"
|
|
41
|
+
: formatDayTime(group.timestamp);
|
|
42
|
+
return (_jsxs("section", { className: "dsh-qa-files__group", children: [_jsxs("h3", { children: [_jsx("span", { children: time }), _jsx("button", { type: "button", className: "dsh-qa-files__jump", "aria-label": `Перейти к сообщению от ${time}`, title: "\u041A \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044E", onClick: () => onJumpToMessage(group.messageId), children: _jsx("svg", { viewBox: "0 0 14 14", "aria-hidden": "true", children: _jsx("path", { d: "M3.5 7h7m-3-3.5L11 7l-3.5 3.5" }) }) })] }), _jsxs("div", { className: "dsh-qa-files__items", children: [group.files.map((file) => (_jsx(QaFileAttachment, { name: file.name, bytes: file.bytes, tone: "sent" }, file.attachmentId))), group.images.map((image) => resolveImage === undefined ? null : (_jsx(QaFileImage, { image: image, resolve: resolveImage }, image.attachmentId)))] })] }, group.messageId));
|
|
43
|
+
}) }));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=QaFilesPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QaFilesPanel.js","sourceRoot":"","sources":["../../../src/client/components/QaFilesPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The surface's header chrome: brand row, the derived conversation title, the
|
|
4
|
+
* agents/sources/files controls and the reset action. Plain (non-memoized)
|
|
5
|
+
* rendering — the badge counts move with the session state anyway, so
|
|
6
|
+
* reference guards would never pay off here.
|
|
7
|
+
*/
|
|
8
|
+
function modeLabel(agentPreset) {
|
|
9
|
+
if (agentPreset === null)
|
|
10
|
+
return "Режим вопросов";
|
|
11
|
+
const name = agentPreset
|
|
12
|
+
.replace(/[-_]+/gu, " ")
|
|
13
|
+
.replace(/^\p{Ll}/u, (letter) => letter.toUpperCase());
|
|
14
|
+
return `Режим «${name}»`;
|
|
15
|
+
}
|
|
16
|
+
function RobotBadge() {
|
|
17
|
+
return (_jsxs("svg", { className: "dsh-qa-agentview__icon", viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("rect", { x: "3", y: "5", width: "10", height: "7.5", rx: "1.75" }), _jsx("path", { d: "M8 2.5V5m0-.25a.9.9 0 1 0-.01-1.8.9.9 0 0 0 .01 1.8ZM5.4 8.4h1.7M8.9 8.4h1.7M6 10.4h4" })] }));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The subagent indication for headerless deployments: a slim status line
|
|
21
|
+
* above the transcript with the way back to the parent chat. With a header,
|
|
22
|
+
* the same indication lives in the title row instead.
|
|
23
|
+
*/
|
|
24
|
+
export function QaSubagentBanner({ onClose, }) {
|
|
25
|
+
return (_jsxs("div", { className: "dsh-qa-agentview", role: "status", children: [_jsx(RobotBadge, {}), _jsx("span", { children: "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0441\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u0430" }), _jsx("button", { type: "button", onClick: onClose, children: "\u2190 \u0412 \u0447\u0430\u0442" })] }));
|
|
26
|
+
}
|
|
27
|
+
export function QaHeader({ logoUrl, title, viewingSubagent, onCloseSubagent, agentPreset, agentCount, agentsOpen, onToggleAgents, sourcesVisible, sourcesCount, sourcesComplete, sourcesOpen, onOpenSources, fileCount, filesOpen, onOpenFiles, showReset, resetDisabled, onReset, }) {
|
|
28
|
+
return (_jsx("header", { className: "dsh-qa-header", children: _jsxs("div", { className: "dsh-qa-header__inner", children: [_jsxs("div", { className: "dsh-qa-header__title-row", children: [logoUrl === null ? null : (_jsx("img", { className: "dsh-qa-header__logo", src: logoUrl, alt: "" })), title === null ? null : _jsx("h1", { title: title, children: title }), viewingSubagent ? (_jsxs("span", { className: "dsh-qa-header__viewing", children: [_jsx(RobotBadge, {}), "\u041F\u0440\u043E\u0441\u043C\u043E\u0442\u0440 \u0441\u0443\u0431\u0430\u0433\u0435\u043D\u0442\u0430", _jsx("button", { type: "button", className: "dsh-qa-header__back", onClick: onCloseSubagent, children: "\u2190 \u0412 \u0447\u0430\u0442" })] })) : (_jsxs("span", { className: "dsh-qa-header__mode", children: [_jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("circle", { cx: "8", cy: "3.25", r: "1.5" }), _jsx("circle", { cx: "4", cy: "11.75", r: "1.5" }), _jsx("circle", { cx: "12", cy: "11.75", r: "1.5" }), _jsx("path", { d: "M8 4.75v2.5m0 0H4v3m4-3h4v3" })] }), modeLabel(agentPreset)] })), _jsxs("button", { type: "button", className: "dsh-qa-header__agents", disabled: agentCount === 0, "aria-expanded": agentsOpen, onClick: onToggleAgents, children: [_jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("rect", { x: "3", y: "5.5", width: "10", height: "7", rx: "1.75" }), _jsx("path", { d: "M8 3v2.5M6.2 9h.01M9.8 9h.01M6.2 11h3.6" })] }), "\u0410\u0433\u0435\u043D\u0442\u044B", agentCount === 0 ? null : ` (${agentCount})`] }), sourcesVisible ? (_jsxs("button", { type: "button", className: "dsh-qa-header__sources", disabled: sourcesCount === 0 && sourcesComplete, "aria-expanded": sourcesOpen, onClick: onOpenSources, children: [_jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("circle", { cx: "8", cy: "8", r: "5.75" }), _jsx("path", { d: "M2.25 8h11.5M8 2.25c1.6 1.55 2.4 3.5 2.4 5.75S9.6 12.2 8 13.75C6.4 12.2 5.6 10.25 5.6 8S6.4 3.8 8 2.25Z" })] }), "\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0438", sourcesCount === 0 && sourcesComplete
|
|
29
|
+
? null
|
|
30
|
+
: ` (${sourcesCount})`] })) : null, _jsxs("button", { type: "button", className: showReset
|
|
31
|
+
? "dsh-qa-header__files"
|
|
32
|
+
: "dsh-qa-header__files dsh-qa-header__files--end", disabled: fileCount === 0, "aria-expanded": filesOpen, onClick: onOpenFiles, children: [_jsxs("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("path", { d: "M9.25 2.5H4.75A1.25 1.25 0 0 0 3.5 3.75v8.5a1.25 1.25 0 0 0 1.25 1.25h6.5a1.25 1.25 0 0 0 1.25-1.25V5.75L9.25 2.5Z" }), _jsx("path", { d: "M9.25 2.5v3.25h3.25M6 8.5h4M6 11h2.5" })] }), "\u0424\u0430\u0439\u043B\u044B", fileCount === 0 ? null : ` (${fileCount})`] }), showReset ? (_jsx("button", { type: "button", className: "dsh-qa-header__reset", disabled: resetDisabled, onClick: onReset, children: "\u041D\u043E\u0432\u044B\u0439 \u0447\u0430\u0442" })) : null] }), _jsx("div", { className: "dsh-qa-header__tabs", "aria-label": "\u0412\u0438\u0434 \u0431\u0435\u0441\u0435\u0434\u044B", children: _jsx("span", { "aria-current": "page", children: "\u0427\u0430\u0442" }) })] }) }));
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=QaHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QaHeader.js","sourceRoot":"","sources":["../../../src/client/components/QaHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { memo, useEffect, useRef, useState } from "react";
|
|
3
3
|
import { sameWorkItems } from "./QaWorkGroup.js";
|
|
4
|
+
import { QaFileAttachment } from "./QaFileAttachment.js";
|
|
4
5
|
import { buildSourceRefs } from "./source-refs.js";
|
|
5
6
|
function QaAttachedImage({ image, resolve, }) {
|
|
6
7
|
const [url, setUrl] = useState(null);
|
|
@@ -62,7 +63,9 @@ export function sameMessage(a, b) {
|
|
|
62
63
|
a.stats.tokensPerSecond === b.stats.tokensPerSecond)));
|
|
63
64
|
}
|
|
64
65
|
if (a.role === "user" && b.role === "user") {
|
|
65
|
-
return a.author === b.author &&
|
|
66
|
+
return (a.author === b.author &&
|
|
67
|
+
sameImages(a.images, b.images) &&
|
|
68
|
+
sameFiles(a.files, b.files));
|
|
66
69
|
}
|
|
67
70
|
if (a.role === "system" && b.role === "system") {
|
|
68
71
|
return ((a.notice === undefined) === (b.notice === undefined) &&
|
|
@@ -96,6 +99,15 @@ function sameImages(a, b) {
|
|
|
96
99
|
return a.every((image, index) => image.attachmentId === b[index].attachmentId &&
|
|
97
100
|
image.mediaType === b[index].mediaType);
|
|
98
101
|
}
|
|
102
|
+
function sameFiles(a, b) {
|
|
103
|
+
if (a === b)
|
|
104
|
+
return true;
|
|
105
|
+
if (a === undefined || b === undefined || a.length !== b.length)
|
|
106
|
+
return false;
|
|
107
|
+
return a.every((file, index) => file.attachmentId === b[index].attachmentId &&
|
|
108
|
+
file.name === b[index].name &&
|
|
109
|
+
file.bytes === b[index].bytes);
|
|
110
|
+
}
|
|
99
111
|
function readRatings(stateKey) {
|
|
100
112
|
if (stateKey === undefined)
|
|
101
113
|
return {};
|
|
@@ -140,7 +152,7 @@ function assistantMeta(message) {
|
|
|
140
152
|
}
|
|
141
153
|
return parts;
|
|
142
154
|
}
|
|
143
|
-
export const QaMessage = memo(function QaMessage({ message, renderMarkdown, showTimestamp, stateKey, onRegenerate, resolveImage, onOpenSources, onSourceDetail, }) {
|
|
155
|
+
export const QaMessage = memo(function QaMessage({ message, renderMarkdown, showTimestamp, stateKey, onRegenerate, resolveImage, onOpenSources, onSourceDetail, thinkingPhrases, }) {
|
|
144
156
|
const [copied, setCopied] = useState(false);
|
|
145
157
|
const copiedTimer = useRef(undefined);
|
|
146
158
|
const [rating, setRating] = useState(null);
|
|
@@ -171,7 +183,7 @@ export const QaMessage = memo(function QaMessage({ message, renderMarkdown, show
|
|
|
171
183
|
return (_jsxs("details", { className: "dsh-qa-notice", children: [_jsxs("summary", { className: "dsh-qa-notice__summary", children: [_jsxs("svg", { className: "dsh-qa-notice__icon", viewBox: "0 0 16 16", "aria-hidden": "true", children: [_jsx("rect", { x: "3", y: "5", width: "10", height: "7.5", rx: "1.75" }), _jsx("path", { d: "M8 2.5V5m0-.25a.9.9 0 1 0-.01-1.8.9.9 0 0 0 .01 1.8ZM5.4 8.4h1.7M8.9 8.4h1.7M6 10.4h4" })] }), _jsx("span", { className: "dsh-qa-notice__title", children: message.notice.title }), _jsx("svg", { className: "dsh-qa-notice__chevron", viewBox: "0 0 14 14", "aria-hidden": "true", children: _jsx("path", { d: "m5.25 3.5 3.5 3.5-3.5 3.5" }) })] }), _jsx("div", { className: "dsh-qa-notice__body", children: message.notice.body === "" ? (_jsx("p", { children: "\u0411\u0435\u0437 \u0438\u0442\u043E\u0433\u043E\u0432\u043E\u0433\u043E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F." })) : renderMarkdown ? (_jsx(Markdown, { text: message.notice.body })) : (message.notice.body) })] }));
|
|
172
184
|
}
|
|
173
185
|
if (message.role === "work") {
|
|
174
|
-
return (_jsx("article", { className: "dsh-qa-message dsh-qa-message--work", "data-status": message.status, "aria-label": "\u0420\u0430\u0431\u043E\u0442\u0430 \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A\u0430", children: _jsx(QaWorkGroup, { status: message.status, startedAt: message.startedAt, endedAt: message.endedAt, items: message.items, renderMarkdown: renderMarkdown }) }));
|
|
186
|
+
return (_jsx("article", { className: "dsh-qa-message dsh-qa-message--work", "data-status": message.status, "aria-label": "\u0420\u0430\u0431\u043E\u0442\u0430 \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A\u0430", children: _jsx(QaWorkGroup, { status: message.status, startedAt: message.startedAt, endedAt: message.endedAt, items: message.items, renderMarkdown: renderMarkdown, thinkingPhrases: thinkingPhrases }) }));
|
|
175
187
|
}
|
|
176
188
|
const label = message.role === "assistant"
|
|
177
189
|
? "Помощник"
|
|
@@ -203,7 +215,7 @@ export const QaMessage = memo(function QaMessage({ message, renderMarkdown, show
|
|
|
203
215
|
? assistantMeta(message).map((part) => (_jsx("span", { className: "dsh-qa-message__meta-part", children: part }, part)))
|
|
204
216
|
: null] }));
|
|
205
217
|
const showActions = message.role !== "system" && message.status !== "streaming";
|
|
206
|
-
return (_jsxs("article", { className: `dsh-qa-message dsh-qa-message--${message.role}`, "data-status": message.status, "aria-label": `Сообщение: ${label}`, children: [_jsxs("div", { className: "dsh-qa-message__content", children: [message.role === "user" && message.author !== undefined ? (_jsx("span", { className: "dsh-qa-message__byline", children: message.author })) : null, message.role === "user" && message.images !== undefined ? (_jsx("div", { className: "dsh-qa-message__images", children: message.images.map((image) => resolveImage === undefined ? null : (_jsx(QaAttachedImage, { image: image, resolve: resolveImage }, image.attachmentId))) })) : null, message.role === "assistant" && renderMarkdown ? (_jsx(Markdown, { text: message.text, sourceRefs: sourceRefs, onSourceOpen: onSourceDetail })) : (message.text), message.status === "streaming" ? (_jsx("span", { className: "dsh-qa-message__cursor", "aria-hidden": "true" })) : null] }), message.role === "assistant" &&
|
|
218
|
+
return (_jsxs("article", { className: `dsh-qa-message dsh-qa-message--${message.role}`, "data-status": message.status, "aria-label": `Сообщение: ${label}`, children: [_jsxs("div", { className: "dsh-qa-message__content", children: [message.role === "user" && message.author !== undefined ? (_jsx("span", { className: "dsh-qa-message__byline", children: message.author })) : null, message.role === "user" && message.files !== undefined ? (_jsx("div", { className: "dsh-qa-message__files", "aria-label": "\u041F\u0440\u0438\u043A\u0440\u0435\u043F\u043B\u0451\u043D\u043D\u044B\u0435 \u0444\u0430\u0439\u043B\u044B", children: message.files.map((file) => (_jsx(QaFileAttachment, { name: file.name, bytes: file.bytes, tone: "sent" }, file.attachmentId))) })) : null, message.role === "user" && message.images !== undefined ? (_jsx("div", { className: "dsh-qa-message__images", children: message.images.map((image) => resolveImage === undefined ? null : (_jsx(QaAttachedImage, { image: image, resolve: resolveImage }, image.attachmentId))) })) : null, message.role === "assistant" && renderMarkdown ? (_jsx(Markdown, { text: message.text, sourceRefs: sourceRefs, onSourceOpen: onSourceDetail })) : (message.text), message.status === "streaming" ? (_jsx("span", { className: "dsh-qa-message__cursor", "aria-hidden": "true" })) : null] }), message.role === "assistant" &&
|
|
207
219
|
onOpenSources !== undefined &&
|
|
208
220
|
message.sources !== undefined &&
|
|
209
221
|
message.sources.length > 0 ? (_jsxs("button", { type: "button", className: "dsh-qa-message__sources", onClick: () => onOpenSources(message.sources ?? [], message.sourcesComplete ?? true, message.incompleteSourceOrigins), children: ["\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A\u0438 (", message.sources.length, ")"] })) : null, showActions ? (_jsxs("div", { className: "dsh-qa-message__actions", "data-persistent": persistentMeta || undefined, children: [message.role === "user" ? meta : null, _jsx("button", { type: "button", "aria-label": copied ? "Скопировано" : "Скопировать сообщение", title: copied ? "Скопировано" : "Копировать", onClick: () => void copy(), children: copied ? (_jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "m4.5 9.25 2.75 2.75 6.25-6.25" }) })) : (_jsxs("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: [_jsx("rect", { x: "6.25", y: "3.25", width: "8.5", height: "8.5", rx: "2" }), _jsx("path", { d: "M11.75 11.75v.5a2.5 2.5 0 0 1-2.5 2.5h-3.5a2.5 2.5 0 0 1-2.5-2.5v-3.5a2.5 2.5 0 0 1 2.5-2.5h.5" })] })) }), message.role === "user" ? null : (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", "aria-label": "\u041D\u0440\u0430\u0432\u0438\u0442\u0441\u044F", title: "\u041D\u0440\u0430\u0432\u0438\u0442\u0441\u044F", "aria-pressed": rating === "up", "data-active": rating === "up" || undefined, onClick: () => toggleRating("up"), children: _jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "M5.25 8.25 8.1 2.9a1.3 1.3 0 0 1 2.4.75v3.1h3.1c.9 0 1.55.85 1.33 1.72l-1.05 4.2a1.75 1.75 0 0 1-1.7 1.33H5.25m0-5.75v5.75m0-5.75h-2v5.75h2" }) }) }), _jsx("button", { type: "button", "aria-label": "\u041D\u0435 \u043D\u0440\u0430\u0432\u0438\u0442\u0441\u044F", title: "\u041D\u0435 \u043D\u0440\u0430\u0432\u0438\u0442\u0441\u044F", "aria-pressed": rating === "down", "data-active": rating === "down" || undefined, onClick: () => toggleRating("down"), children: _jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "M12.75 9.75 9.9 15.1a1.3 1.3 0 0 1-2.4-.75v-3.1H4.4a1.38 1.38 0 0 1-1.33-1.72l1.05-4.2A1.75 1.75 0 0 1 5.82 4h6.93m0 5.75V4m0 5.75h2V4h-2" }) }) }), onRegenerate === undefined ? null : (_jsx("button", { type: "button", "aria-label": "\u041F\u0435\u0440\u0435\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C", title: "\u041F\u0435\u0440\u0435\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C", onClick: onRegenerate, children: _jsx("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", children: _jsx("path", { d: "M14.6 9A5.6 5.6 0 1 1 12.9 5l1.7 1.7m0-3.4v3.4h-3.4" }) }) }))] })), message.role === "user" ? null : meta] })) : null] }));
|
|
@@ -214,5 +226,6 @@ export const QaMessage = memo(function QaMessage({ message, renderMarkdown, show
|
|
|
214
226
|
prev.resolveImage === next.resolveImage &&
|
|
215
227
|
prev.onOpenSources === next.onOpenSources &&
|
|
216
228
|
prev.onSourceDetail === next.onSourceDetail &&
|
|
229
|
+
prev.thinkingPhrases === next.thinkingPhrases &&
|
|
217
230
|
sameMessage(prev.message, next.message));
|
|
218
231
|
//# sourceMappingURL=QaMessage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QaMessage.js","sourceRoot":"","sources":["../../../src/client/components/QaMessage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAO1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAqB,MAAM,kBAAkB,CAAC;AAEtE,SAAS,eAAe,CAAC,EACvB,KAAK,EACL,OAAO,GAIR;IACC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACpD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,uEAAuE;QACvE,wDAAwD;QACxD,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAC9B,CAAC,QAAQ,EAAE,EAAE;YACX,IAAI,KAAK;gBAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC,EACD,GAAG,EAAE;YACH,IAAI,KAAK;gBAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC,CACF,CAAC;QACF,OAAO,GAAG,EAAE;YACV,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAClC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,eAAM,SAAS,EAAC,uBAAuB,gBAAY,SAAS,GAAG,CAAC;IACzE,CAAC;IACD,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,OAAO,eAAM,SAAS,EAAC,uBAAuB,gBAAY,QAAQ,GAAG,CAAC;IACxE,CAAC;IACD,OAAO,CACL,YAAG,IAAI,EAAE,GAAG,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,YAAY,YAC5C,cACE,SAAS,EAAC,uBAAuB,EACjC,GAAG,EAAE,GAAG,EACR,GAAG,EAAC,mJAA2B,GAC/B,GACA,CACL,CAAC;AACJ,CAAC;AACD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA2B/C;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,CAAiB,EAAE,CAAiB;IAC9D,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3C,OAAO,CACL,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;YACjB,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;YAC3B,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;YACvB,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAChC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACzD,0EAA0E;IAC1E,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACnE,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACrD,OAAO,CACL,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC;YACjC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;YACnD,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS;gBACpB,CAAC,CAAC,KAAK,KAAK,SAAS;gBACrB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU;oBACxC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM;oBACjC,CAAC,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAC1D,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3C,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,CACL,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;YACrD,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS;gBACrB,CAAC,CAAC,MAAM,KAAK,SAAS;gBACtB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAC1E,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAClB,CAAkC,EAClC,CAAkC;IAElC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC9E,OAAO,CAAC,CAAC,KAAK,CACZ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAChB,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;QAC1B,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK;QAChC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG;QAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI;QAC9B,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO;QACpC,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ;QACtC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK;QAChC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,CAAqC,EACrC,CAAqC;IAErC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC9E,OAAO,CAAC,CAAC,KAAK,CACZ,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACf,KAAK,CAAC,YAAY,KAAM,CAAC,CAAC,KAAK,CAAiB,CAAC,YAAY;QAC7D,KAAK,CAAC,SAAS,KAAM,CAAC,CAAC,KAAK,CAAiB,CAAC,SAAS,CAC1D,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,QAA4B;IAC/C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,QAAQ,UAAU,CAAC,CAAC;QAC/D,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAClD,CAAC,CAAE,MAAiC;YACpC,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,QAA4B,EAC5B,EAAU,EACV,MAAqB;IAErB,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO;IACnC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;;YACnC,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QAC1B,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,QAAQ,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;IACjE,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAA+C;IACpE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,QAAQ,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,QAAQ,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAC3B,SAAS,SAAS,CAAC,EACjB,OAAO,EACP,cAAc,EACd,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,GACC;IACf,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CACxB,SAAS,CACV,CAAC;IACF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC1D,wEAAwE;IACxE,gEAAgE;IAChE,MAAM,SAAS,GAAG,MAAM,CAAsC;QAC5D,GAAG,EAAE,EAAE;QACP,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;KAC1B,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACxE,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAClC,SAAS,CAAC,OAAO,GAAG;gBAClB,GAAG;gBACH,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;aAC7C,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GACd,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,SAAS,CACP,GAAG,EAAE,CAAC,GAAG,EAAE;QACT,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS;YACnC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,EACD,EAAE,CACH,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9D,OAAO,CACL,mBAAS,SAAS,EAAC,eAAe,aAChC,mBAAS,SAAS,EAAC,wBAAwB,aACzC,eACE,SAAS,EAAC,qBAAqB,EAC/B,OAAO,EAAC,WAAW,iBACP,MAAM,aAElB,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,EAAE,EAAC,MAAM,GAAG,EACtD,eAAM,CAAC,EAAC,uFAAuF,GAAG,IAC9F,EACN,eAAM,SAAS,EAAC,sBAAsB,YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,GAAQ,EACpE,cACE,SAAS,EAAC,wBAAwB,EAClC,OAAO,EAAC,WAAW,iBACP,MAAM,YAElB,eAAM,CAAC,EAAC,2BAA2B,GAAG,GAClC,IACE,EACV,cAAK,SAAS,EAAC,qBAAqB,YACjC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAC5B,4JAA+B,CAChC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CACnB,KAAC,QAAQ,IAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,GAAI,CACxC,CAAC,CAAC,CAAC,CACF,OAAO,CAAC,MAAM,CAAC,IAAI,CACpB,GACG,IACE,CACX,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CACL,kBACE,SAAS,EAAC,qCAAqC,iBAClC,OAAO,CAAC,MAAM,gBAChB,6FAAkB,YAE7B,KAAC,WAAW,IACV,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,SAAS,EAAE,OAAO,CAAC,SAAS,EAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,cAAc,EAAE,cAAc,GAC9B,GACM,CACX,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GACT,OAAO,CAAC,IAAI,KAAK,WAAW;QAC1B,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;YACvB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;YAC1B,CAAC,CAAC,QAAQ,CAAC;IACjB,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,MAAM,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,KAAK,SAAS;YAAE,OAAO;QACnE,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClD,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS;gBACnC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACpC,WAAW,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,qEAAqE;QACvE,CAAC;IACH,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC;IACF,MAAM,cAAc,GAAG,aAAa,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;IACxE,MAAM,IAAI,GACR,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACpE,gBAAM,SAAS,EAAC,sBAAsB,aACpC,eAAM,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,YACtD,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,GAC5B,EACN,OAAO,CAAC,IAAI,KAAK,WAAW;gBAC3B,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnC,eAAiB,SAAS,EAAC,2BAA2B,YACnD,IAAI,IADI,IAAI,CAER,CACR,CAAC;gBACJ,CAAC,CAAC,IAAI,IACH,CACR,CAAC;IACJ,MAAM,WAAW,GACf,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,CAAC;IAC9D,OAAO,CACL,mBACE,SAAS,EAAE,kCAAkC,OAAO,CAAC,IAAI,EAAE,iBAC9C,OAAO,CAAC,MAAM,gBACf,cAAc,KAAK,EAAE,aAEjC,eAAK,SAAS,EAAC,yBAAyB,aACrC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CACzD,eAAM,SAAS,EAAC,wBAAwB,YAAE,OAAO,CAAC,MAAM,GAAQ,CACjE,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CACzD,cAAK,SAAS,EAAC,wBAAwB,YACpC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5B,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClC,KAAC,eAAe,IAEd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,YAAY,IAFhB,KAAK,CAAC,YAAY,CAGvB,CACH,CACF,GACG,CACP,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,cAAc,CAAC,CAAC,CAAC,CAChD,KAAC,QAAQ,IACP,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,cAAc,GAC5B,CACH,CAAC,CAAC,CAAC,CACF,OAAO,CAAC,IAAI,CACb,EACA,OAAO,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAChC,eAAM,SAAS,EAAC,wBAAwB,iBAAa,MAAM,GAAG,CAC/D,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,OAAO,CAAC,IAAI,KAAK,WAAW;gBAC7B,aAAa,KAAK,SAAS;gBAC3B,OAAO,CAAC,OAAO,KAAK,SAAS;gBAC7B,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC3B,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,yBAAyB,EACnC,OAAO,EAAE,GAAG,EAAE,CACZ,aAAa,CACX,OAAO,CAAC,OAAO,IAAI,EAAE,EACrB,OAAO,CAAC,eAAe,IAAI,IAAI,EAC/B,OAAO,CAAC,uBAAuB,CAChC,yEAGS,OAAO,CAAC,OAAO,CAAC,MAAM,SAC3B,CACV,CAAC,CAAC,CAAC,IAAI,EACP,WAAW,CAAC,CAAC,CAAC,CACb,eACE,SAAS,EAAC,yBAAyB,qBAClB,cAAc,IAAI,SAAS,aAE3C,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EACtC,iBACE,IAAI,EAAC,QAAQ,gBACD,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,uBAAuB,EAC5D,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,EAC5C,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,YAEzB,MAAM,CAAC,CAAC,CAAC,CACR,cAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,YACzC,eAAM,CAAC,EAAC,+BAA+B,GAAG,GACtC,CACP,CAAC,CAAC,CAAC,CACF,eAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,aACzC,eAAM,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,GAAG,EAC1D,eAAM,CAAC,EAAC,gGAAgG,GAAG,IACvG,CACP,GACM,EACR,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAChC,8BACE,iBACE,IAAI,EAAC,QAAQ,gBACF,kDAAU,EACrB,KAAK,EAAC,kDAAU,kBACF,MAAM,KAAK,IAAI,iBAChB,MAAM,KAAK,IAAI,IAAI,SAAS,EACzC,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,YAEjC,cAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,YACzC,eAAM,CAAC,EAAC,6IAA6I,GAAG,GACpJ,GACC,EACT,iBACE,IAAI,EAAC,QAAQ,gBACF,+DAAa,EACxB,KAAK,EAAC,+DAAa,kBACL,MAAM,KAAK,MAAM,iBAClB,MAAM,KAAK,MAAM,IAAI,SAAS,EAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,YAEnC,cAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,YACzC,eAAM,CAAC,EAAC,2IAA2I,GAAG,GAClJ,GACC,EACR,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACnC,iBACE,IAAI,EAAC,QAAQ,gBACF,kGAAkB,EAC7B,KAAK,EAAC,kGAAkB,EACxB,OAAO,EAAE,YAAY,YAErB,cAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,YACzC,eAAM,CAAC,EAAC,qDAAqD,GAAG,GAC5D,GACC,CACV,IACA,CACJ,EACA,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAClC,CACP,CAAC,CAAC,CAAC,IAAI,IACA,CACX,CAAC;AACJ,CAAC,EACD,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACb,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc;IAC3C,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa;IACzC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;IAC/B,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;IACvC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;IACvC,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa;IACzC,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc;IAC3C,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAC1C,CAAC"}
|
|
1
|
+
{"version":3,"file":"QaMessage.js","sourceRoot":"","sources":["../../../src/client/components/QaMessage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
/**
|
|
4
|
+
* The shared QA dialog shell: backdrop, panel, head with the close control,
|
|
5
|
+
* a scrolling body, and an optional footer. Escape and a backdrop click close
|
|
6
|
+
* it, and the close control takes focus on open. Rendering is a no-op while
|
|
7
|
+
* closed, so a closed dialog costs nothing.
|
|
8
|
+
*/
|
|
9
|
+
export function QaModal(props) {
|
|
10
|
+
const closeButton = useRef(null);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (!props.open)
|
|
13
|
+
return;
|
|
14
|
+
closeButton.current?.focus();
|
|
15
|
+
const onKey = (event) => {
|
|
16
|
+
if (event.key === "Escape")
|
|
17
|
+
props.onClose();
|
|
18
|
+
};
|
|
19
|
+
window.addEventListener("keydown", onKey);
|
|
20
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
21
|
+
}, [props.open, props.onClose]);
|
|
22
|
+
if (!props.open)
|
|
23
|
+
return null;
|
|
24
|
+
return (_jsx("div", { className: "dsh-qa-modal", role: "dialog", "aria-modal": "true", "aria-label": props.title, onClick: (event) => {
|
|
25
|
+
if (event.target === event.currentTarget)
|
|
26
|
+
props.onClose();
|
|
27
|
+
}, children: _jsxs("div", { className: props.wide === true
|
|
28
|
+
? "dsh-qa-modal__panel dsh-qa-modal__panel--wide"
|
|
29
|
+
: "dsh-qa-modal__panel", children: [_jsxs("header", { className: "dsh-qa-modal__head", children: [_jsx("h2", { className: "dsh-qa-modal__title", children: props.title }), _jsx("button", { ref: closeButton, type: "button", className: "dsh-qa-modal__close", "aria-label": props.closeLabel, onClick: props.onClose, children: _jsx("svg", { viewBox: "0 0 14 14", "aria-hidden": "true", children: _jsx("path", { d: "m3.5 3.5 7 7m0-7-7 7" }) }) })] }), _jsx("div", { className: "dsh-qa-modal__body", children: props.children }), props.footer === undefined ? null : (_jsx("footer", { className: "dsh-qa-modal__footer", children: props.footer }))] }) }));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=QaModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QaModal.js","sourceRoot":"","sources":["../../../src/client/components/QaModal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAkB,MAAM,OAAO,CAAC;AAoB1D;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,WAAW,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IACpD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAO;QACxB,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,CAAC,KAAoB,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;gBAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9C,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,CACL,cACE,SAAS,EAAC,cAAc,EACxB,IAAI,EAAC,QAAQ,gBACF,MAAM,gBACL,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa;gBAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5D,CAAC,YAED,eACE,SAAS,EACP,KAAK,CAAC,IAAI,KAAK,IAAI;gBACjB,CAAC,CAAC,+CAA+C;gBACjD,CAAC,CAAC,qBAAqB,aAG3B,kBAAQ,SAAS,EAAC,oBAAoB,aACpC,aAAI,SAAS,EAAC,qBAAqB,YAAE,KAAK,CAAC,KAAK,GAAM,EACtD,iBACE,GAAG,EAAE,WAAW,EAChB,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,qBAAqB,gBACnB,KAAK,CAAC,UAAU,EAC5B,OAAO,EAAE,KAAK,CAAC,OAAO,YAEtB,cAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,YACzC,eAAM,CAAC,EAAC,sBAAsB,GAAG,GAC7B,GACC,IACF,EACT,cAAK,SAAS,EAAC,oBAAoB,YAAE,KAAK,CAAC,QAAQ,GAAO,EACzD,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACnC,iBAAQ,SAAS,EAAC,sBAAsB,YAAE,KAAK,CAAC,MAAM,GAAU,CACjE,IACG,GACF,CACP,CAAC;AACJ,CAAC"}
|