refactor(island): ♻️ remove deduplicated code from @deno/gfm

This commit is contained in:
Julien Oculi 2024-07-02 17:39:37 +02:00
parent a75de86d68
commit d44771dab9

View file

@ -1,5 +1,5 @@
import { JsonParseStream } from '$std/json/mod.ts'
import { CSS, render as renderMd } from '@deno/gfm'
import { Markdown } from ':components/Markdown.tsx'
import { Signal, signal, useSignal } from '@preact/signals'
import { JSX } from 'preact'
import { useEffect, useRef } from 'preact/hooks'
@ -15,16 +15,6 @@ const currentReader = signal<ReadableStreamDefaultReader<BotResponse> | null>(
)
let currentResponse: string[] = []
function MdCell({ children }: { children: Signal<string> }) {
return (
<div
class='markdown-body'
dangerouslySetInnerHTML={{ __html: renderMd(children.value) }}
>
</div>
)
}
type BotMessage = {
role: string
content: string
@ -95,7 +85,6 @@ export default function AiChatBox() {
return (
<>
<style dangerouslySetInnerHTML={{ __html: CSS }}></style>
<button
class='islands__ai_chat_box__button'
onClick={() => dialog.current?.showModal()}
@ -103,7 +92,9 @@ export default function AiChatBox() {
<i class='ri-bard-line'></i>
</button>
<dialog ref={dialog} class='islands__ai_chat_box__dialog'>
<div class='islands__ai_chat_box__dialog__content'>{history}</div>
<div class='islands__ai_chat_box__dialog__content'>
{history}
</div>
<form ref={form} class='islands__ai_chat_box__dialog__form'>
<input
type='text'
@ -139,7 +130,7 @@ async function chatListener(event: Event, history: Signal<JSX.Element[]>) {
const botEntry = (
<span class='islands__ai_chat_box__history_bot'>
<MdCell>{botMessage}</MdCell>
<Markdown>{botMessage}</Markdown>
</span>
)