summaryrefslogtreecommitdiff
path: root/examples/server/public
diff options
context:
space:
mode:
Diffstat (limited to 'examples/server/public')
-rw-r--r--examples/server/public/index.html38
1 files changed, 30 insertions, 8 deletions
diff --git a/examples/server/public/index.html b/examples/server/public/index.html
index 60659c14..175c5247 100644
--- a/examples/server/public/index.html
+++ b/examples/server/public/index.html
@@ -160,6 +160,11 @@
height: 10em;
}
+ [contenteditable] {
+ display: inline-block;
+ white-space: pre-wrap;
+ outline: 0px solid transparent;
+ }
@keyframes loading-bg-wipe {
0% {
@@ -462,18 +467,23 @@
}, "{{char}}");
}
- const runCompletion = async () => {
+ const runCompletion = () => {
if (controller.value) {
console.log('already running...');
return;
}
const { prompt } = session.value;
transcriptUpdate([...session.value.transcript, ["", prompt]]);
- await runLlama(prompt, {
+ runLlama(prompt, {
...params.value,
slot_id: slot_id,
stop: [],
- }, "");
+ }, "").finally(() => {
+ session.value.prompt = session.value.transcript.map(([_, data]) =>
+ Array.isArray(data) ? data.map(msg => msg.content).join('') : data
+ ).join('');
+ session.value.transcript = [];
+ })
}
const stop = (e) => {
@@ -573,6 +583,7 @@
}
}, [messages])
+ const isCompletionMode = session.value.type === 'completion'
const chatLine = ([user, data], index) => {
let message
const isArrayMessage = Array.isArray(data)
@@ -582,20 +593,31 @@
const text = isArrayMessage ?
data.map(msg => msg.content).join('').replace(/^\s+/, '') :
data;
- message = html`<${Markdownish} text=${template(text)} />`
+ message = isCompletionMode ?
+ text :
+ html`<${Markdownish} text=${template(text)} />`
}
if (user) {
return html`<p key=${index}><strong>${template(user)}:</strong> ${message}</p>`
} else {
- return html`<p key=${index}>${message}</p>`
+ return isCompletionMode ?
+ html`<span key=${index}>${message}</span>` :
+ html`<p key=${index}>${message}</p>`
}
};
+ const handleCompletionEdit = (e) => {
+ session.value.prompt = e.target.innerText;
+ session.value.transcript = [];
+ }
+
return html`
- <section id="chat" ref=${container}>
+ <div id="chat" ref=${container} key=${messages.length}>
<img style="width: 60%;${!session.value.image_selected ? `display: none;` : ``}" src="${session.value.image_selected}"/>
- ${messages.flatMap(chatLine)}
- </section>`;
+ <span contenteditable=${isCompletionMode} ref=${container} oninput=${handleCompletionEdit}>
+ ${messages.flatMap(chatLine)}
+ </span>
+ </div>`;
};
const ConfigForm = (props) => {