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