refactor(island): ♻️ remove deduplicated code from @deno/gfm
This commit is contained in:
parent
a75de86d68
commit
d44771dab9
|
@ -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>
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in a new issue