Skip to content

Commit 68e9cef

Browse files
authored
Merge pull request #269 from iceljc/features/refine-chat-window
Features/refine chat window
2 parents 21cdc87 + 64e2cc4 commit 68e9cef

File tree

13 files changed

+147
-48
lines changed

13 files changed

+147
-48
lines changed

package-lock.json

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
"svelte-json-tree": "^2.2.0",
6565
"svelte-jsoneditor": "^0.21.1",
6666
"svelte-link": "^1.4.0",
67+
"svelte-markdown": "^0.4.1",
6768
"svelte-player": "^0.0.21",
6869
"svelte-select": "^5.7.0",
6970
"svelte-splitpanes": "^8.0.5",

src/lib/common/Markdown.svelte

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<script>
2+
3+
/** @type {string} */
4+
export let lang;
5+
6+
/** @type {string} */
7+
export let text;
8+
9+
10+
/** @type {boolean} */
11+
let copied = false;
12+
13+
function copyToClipboard() {
14+
navigator.clipboard.writeText(text).then(() => {
15+
setTimeout(() => {
16+
copied = false;
17+
}, 800);
18+
});
19+
}
20+
</script>
21+
22+
23+
<div class="code-block">
24+
<div class="code-header">
25+
<div class="line-align-center fw-bold">
26+
{lang || ''}
27+
</div>
28+
<!-- svelte-ignore a11y-click-events-have-key-events -->
29+
<!-- svelte-ignore a11y-no-static-element-interactions -->
30+
<div
31+
class="line-align-center copy-btn"
32+
data-bs-toggle="tooltip"
33+
data-bs-placement="top"
34+
title="Copy"
35+
on:mouseup={() => copyToClipboard()}
36+
on:mousedown={() => copied = true}
37+
>
38+
{#if copied}
39+
<div class="div-center">
40+
<div class="line-align-center">
41+
<i class="bx bx-check" style="font-size: 18px;" />
42+
</div>
43+
<div class="line-align-center">
44+
<span style="font-size: 10px;">{'Copied!'}</span>
45+
</div>
46+
</div>
47+
{:else}
48+
<i class="bx bx-copy clickable" />
49+
{/if}
50+
</div>
51+
</div>
52+
<pre>
53+
<code class={`language-${lang}`}>
54+
<div>{text}</div>
55+
</code>
56+
</pre>
57+
</div>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<script>
2+
import SvelteMarkdown from 'svelte-markdown';
3+
import { replaceMarkdown, replaceNewLine } from '$lib/helpers/http';
4+
import CodeBlock from './CodeBlock.svelte';
5+
6+
/** @type {string} */
7+
export let text;
8+
9+
/** @type {string} */
10+
export let containerClasses = "";
11+
12+
/** @type {string} */
13+
export let containerStyles = "";
14+
15+
/** @type {boolean} */
16+
export let rawText = false;
17+
18+
let innerText = '';
19+
$: {
20+
innerText = !rawText ? replaceNewLine(replaceMarkdown(text || '')) : text;
21+
}
22+
</script>
23+
24+
<div
25+
class={`markdown-container markdown-lite ${containerClasses || 'text-white'}`}
26+
style={`${containerStyles}`}
27+
>
28+
<!-- {@html innerText} -->
29+
<SvelteMarkdown
30+
source={innerText}
31+
renderers={{
32+
code: CodeBlock
33+
}}
34+
/>
35+
</div>

src/lib/scss/app.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ File: Main Css File
4444
@import "custom/components/audio";
4545
@import "custom/components/text";
4646
@import "custom/components/multiselect";
47+
@import "custom/components/markdown";
4748

4849
// Plugins
4950
@import "custom/plugins/custom-scrollbar";

src/lib/scss/custom/common/_common.scss

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -190,19 +190,6 @@ button:focus {
190190
white-space: pre-wrap;
191191
margin-top: 1em;
192192
margin-bottom: 1em;
193-
194-
&:has(.language-sql),
195-
&:has(.language-java),
196-
&:has(.language-javascript),
197-
&:has(.language-typescript),
198-
&:has(.language-csharp),
199-
&:has(.language-python),
200-
&:has(.language-json) {
201-
background-color: black;
202-
color: white;
203-
border-radius: 5px;
204-
padding: 5px 10px;
205-
}
206193
}
207194

208195
pre::-webkit-scrollbar {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
.code-block {
2+
position: relative;
3+
background-color: black;
4+
color: white;
5+
border-radius: 5px;
6+
padding: 5px 10px;
7+
8+
pre {
9+
margin: 0px !important;
10+
white-space: pre !important;
11+
overflow-x: auto;
12+
scrollbar-width: thin;
13+
max-width: 100%;
14+
}
15+
16+
.code-header {
17+
display: flex;
18+
justify-content: space-between;
19+
}
20+
}

src/lib/scss/custom/pages/_conversation.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,5 @@
2727
display: -webkit-box;
2828
-webkit-box-orient: vertical;
2929
-webkit-line-clamp: 10;
30+
max-height: 300px;
3031
}

src/routes/chat/[agentId]/[conversationId]/persist-log/content-log-element.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script>
22
import { Button } from '@sveltestrap/sveltestrap';
33
import Link from 'svelte-link/src/Link.svelte';
4-
import Markdown from "$lib/common/Markdown.svelte";
4+
import Markdown from "$lib/common/markdown/Markdown.svelte";
55
import { ContentLogSource } from '$lib/helpers/enums';
66
import { utcToLocal } from '$lib/helpers/datetime';
77
import { directToAgentPage } from '$lib/helpers/utils/common';

0 commit comments

Comments
 (0)