Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
open-webui
Commits
e509dafd
Commit
e509dafd
authored
Oct 24, 2023
by
Timothy J. Baek
Browse files
feat: markdown styling added
parent
38519a26
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
110 additions
and
23 deletions
+110
-23
src/routes/+page.svelte
src/routes/+page.svelte
+99
-23
tailwind.config.js
tailwind.config.js
+11
-0
No files found.
src/routes/+page.svelte
View file @
e509dafd
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
let
chats
=
[];
let
chats
=
[];
let
chatId
=
uuidv4
();
let
chatId
=
uuidv4
();
let title =
``
;
let
title
=
''
;
let
prompt
=
''
;
let
prompt
=
''
;
let
messages
=
[];
let
messages
=
[];
...
@@ -116,6 +116,40 @@
...
@@ -116,6 +116,40 @@
);
);
};
};
const
createCopyCodeBlockButton
=
()
=>
{
// use a class selector if available
let
blocks
=
document
.
querySelectorAll
(
'
pre
'
);
console
.
log
(
blocks
);
blocks
.
forEach
((
block
)
=>
{
// only add button if browser supports Clipboard API
if
(
navigator
.
clipboard
)
{
let
button
=
document
.
createElement
(
'
button
'
);
button
.
innerText
=
'
Copy Code
'
;
block
.
appendChild
(
button
);
button
.
addEventListener
(
'
click
'
,
async
()
=>
{
await
copyCode
(
block
,
button
);
});
}
});
async
function
copyCode
(
block
,
button
)
{
let
code
=
block
.
querySelector
(
'
code
'
);
let
text
=
code
.
innerText
;
await
navigator
.
clipboard
.
writeText
(
text
);
// visual feedback that task is completed
button
.
innerText
=
'
Code Copied
'
;
setTimeout
(()
=>
{
button
.
innerText
=
'
Copy Code
'
;
},
700
);
}
};
//////////////////////////
//////////////////////////
// Web functions
// Web functions
//////////////////////////
//////////////////////////
...
@@ -176,12 +210,18 @@
...
@@ -176,12 +210,18 @@
const
loadChat
=
async
(
id
)
=>
{
const
loadChat
=
async
(
id
)
=>
{
const
chat
=
await
db
.
get
(
'
chats
'
,
id
);
const
chat
=
await
db
.
get
(
'
chats
'
,
id
);
messages = chat.messages;
if
(
chatId
!==
chat
.
id
)
{
title = chat.title;
messages
=
chat
.
messages
;
chatId = chat.id;
title
=
chat
.
title
;
selectedModel = chat.model ?? selectedModel;
chatId
=
chat
.
id
;
system = chat.system ?? system;
selectedModel
=
chat
.
model
??
selectedModel
;
temperature = chat.temperature ?? temperature;
system
=
chat
.
system
??
system
;
temperature
=
chat
.
temperature
??
temperature
;
await
tick
();
hljs
.
highlightAll
();
createCopyCodeBlockButton
();
}
};
};
const
deleteChatHistory
=
async
()
=>
{
const
deleteChatHistory
=
async
()
=>
{
...
@@ -347,24 +387,25 @@
...
@@ -347,24 +387,25 @@
console
.
log
(
error
);
console
.
log
(
error
);
}
}
window
.
scrollTo
({
top
:
document
.
body
.
scrollHeight
});
window
.
scrollTo
({
top
:
document
.
body
.
scrollHeight
});
await
db
.
put
(
'
chats
'
,
{
id
:
chatId
,
title
:
title
===
''
?
'
New Chat
'
:
title
,
model
:
selectedModel
,
system
:
system
,
options
:
{
temperature
:
temperature
},
timestamp
:
Date
.
now
(),
messages
:
messages
});
}
}
window
.
scrollTo
({
top
:
document
.
body
.
scrollHeight
});
window
.
scrollTo
({
top
:
document
.
body
.
scrollHeight
});
if
(
messages
.
length
==
2
)
{
if
(
messages
.
length
==
2
)
{
await generateTitle(user_prompt);
await
generateTitle
(
chatId
,
user_prompt
);
}
}
await db.put('chats', {
id: chatId,
title: title,
model: selectedModel,
system: system,
options: {
temperature: temperature
},
timestamp: Date.now(),
messages: messages
});
chats
=
await
db
.
getAllFromIndex
(
'
chats
'
,
'
timestamp
'
);
chats
=
await
db
.
getAllFromIndex
(
'
chats
'
,
'
timestamp
'
);
}
}
};
};
...
@@ -448,7 +489,7 @@
...
@@ -448,7 +489,7 @@
window
.
scrollTo
({
top
:
document
.
body
.
scrollHeight
});
window
.
scrollTo
({
top
:
document
.
body
.
scrollHeight
});
await
db
.
put
(
'
chats
'
,
{
await
db
.
put
(
'
chats
'
,
{
id
:
chatId
,
id
:
chatId
,
title: title,
title
:
title
===
''
?
'
New Chat
'
:
title
,
model
:
selectedModel
,
model
:
selectedModel
,
system
:
system
,
system
:
system
,
options
:
{
options
:
{
...
@@ -463,7 +504,7 @@
...
@@ -463,7 +504,7 @@
console
.
log
(
messages
);
console
.
log
(
messages
);
};
};
const generateTitle = async (user_prompt) => {
const
generateTitle
=
async
(
_chatId
,
user_prompt
)
=>
{
console
.
log
(
'
generateTitle
'
);
console
.
log
(
'
generateTitle
'
);
const
res
=
await
fetch
(
`
${
API_BASE_URL
}
/generate`
,
{
const
res
=
await
fetch
(
`
${
API_BASE_URL
}
/generate`
,
{
...
@@ -488,7 +529,11 @@
...
@@ -488,7 +529,11 @@
if
(
res
)
{
if
(
res
)
{
console
.
log
(
res
);
console
.
log
(
res
);
title = res.response;
const
chat
=
await
db
.
get
(
'
chats
'
,
_chatId
);
await
db
.
put
(
'
chats
'
,
{
...
chat
,
title
:
res
.
response
===
''
?
'
New Chat
'
:
res
.
response
});
if
(
chat
.
id
===
chatId
)
{
title
=
res
.
response
;
}
}
}
};
};
</script>
</script>
...
@@ -615,7 +660,9 @@
...
@@ -615,7 +660,9 @@
</div>
</div>
</div>
</div>
{:else}
{:else}
<div class="whitespace-pre-line">
<div
class=
"prose prose-invert prose-headings:my-0 prose-p:my-0 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-img:my-0 prose-ul:-my-2 prose-ol:-my-2 prose-li:-my-2 whitespace-pre-line"
>
{@html marked.parse(message.content)}
{@html marked.parse(message.content)}
</div>
</div>
{/if}
{/if}
...
@@ -869,4 +916,33 @@
...
@@ -869,4 +916,33 @@
clip-path
:
inset
(
0
-1ch
0
0
);
clip-path
:
inset
(
0
-1ch
0
0
);
}
}
}
}
pre
[
class
*=
'language-'
]
{
position
:
relative
;
overflow
:
auto
;
/* make space */
margin
:
5px
0
;
padding
:
1.75rem
0
1.75rem
1rem
;
border-radius
:
10px
;
}
pre
[
class
*=
'language-'
]
button
{
position
:
absolute
;
top
:
5px
;
right
:
5px
;
font-size
:
0.9rem
;
padding
:
0.15rem
;
background-color
:
#828282
;
border
:
ridge
1px
#7b7b7c
;
border-radius
:
5px
;
text-shadow
:
#c4c4c4
0
0
2px
;
}
pre
[
class
*=
'language-'
]
button
:hover
{
cursor
:
pointer
;
background-color
:
#bcbabb
;
}
</style>
</style>
tailwind.config.js
View file @
e509dafd
...
@@ -17,6 +17,17 @@ export default {
...
@@ -17,6 +17,17 @@ export default {
900
:
'
#202123
'
,
900
:
'
#202123
'
,
950
:
'
#050509
'
950
:
'
#050509
'
}
}
},
typography
:
{
DEFAULT
:
{
css
:
{
pre
:
false
,
code
:
false
,
'
pre code
'
:
false
,
'
code::before
'
:
false
,
'
code::after
'
:
false
}
}
}
}
}
}
},
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment