mirror of
https://github.com/dergigi/boris.git
synced 2026-01-01 05:54:37 +01:00
- Update useMarkdownToHTML to return {renderedHtml, previewRef}
- Use returned previewRef in ContentPanel hidden markdown preview
- Resolves article markdown not rendering instantly
36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import React, { useState, useEffect, useRef } from 'react'
|
|
|
|
/**
|
|
* Hook to convert markdown to HTML using a hidden ReactMarkdown component
|
|
*/
|
|
export const useMarkdownToHTML = (markdown?: string): { renderedHtml: string, previewRef: React.RefObject<HTMLDivElement> } => {
|
|
const previewRef = useRef<HTMLDivElement>(null)
|
|
const [renderedHtml, setRenderedHtml] = useState<string>('')
|
|
|
|
useEffect(() => {
|
|
if (!markdown) {
|
|
setRenderedHtml('')
|
|
return
|
|
}
|
|
|
|
console.log('📝 Converting markdown to HTML...')
|
|
|
|
const rafId = requestAnimationFrame(() => {
|
|
if (previewRef.current) {
|
|
const html = previewRef.current.innerHTML
|
|
console.log('✅ Markdown converted to HTML:', html.length, 'chars')
|
|
setRenderedHtml(html)
|
|
} else {
|
|
console.warn('⚠️ markdownPreviewRef.current is null')
|
|
}
|
|
})
|
|
|
|
return () => cancelAnimationFrame(rafId)
|
|
}, [markdown])
|
|
|
|
return { renderedHtml, previewRef }
|
|
}
|
|
|
|
// Removed separate useMarkdownPreviewRef; use useMarkdownToHTML to obtain previewRef
|
|
|