import { useState } from 'react' import { Button, Card } from '../ui' import type { MediaRef, Page } from '@/types/nostr' import { t } from '@/lib/i18n' import { createPagesHandlers, PagesManager } from './PagesManager' import { createImageUploadHandler } from './imageUpload' export interface MarkdownEditorTwoColumnsProps { value: string onChange: (value: string) => void pages?: Page[] onPagesChange?: (pages: Page[]) => void onMediaAdd?: (media: MediaRef) => void onBannerChange?: (url: string) => void } export function MarkdownEditorTwoColumns(props: MarkdownEditorTwoColumnsProps): React.ReactElement { const [uploading, setUploading] = useState(false) const [error, setError] = useState(null) const pages = props.pages ?? [] const pagesHandlers = createPagesHandlers({ pages, onPagesChange: props.onPagesChange }) const handleImageUpload = createImageUploadHandler({ setError, setUploading, onMediaAdd: props.onMediaAdd, onBannerChange: props.onBannerChange, onSetPageImageUrl: pagesHandlers.setPageContent, }) return (
{ void handleImageUpload({ file }) }} uploading={uploading} error={error} {...(props.onPagesChange ? { onAddPage: pagesHandlers.addPage } : {})} />
{props.onPagesChange ? ( { await handleImageUpload({ file, pageNumber }) }} /> ) : null}
) } function MarkdownToolbar(params: { onFileSelected: (file: File) => void uploading: boolean error: string | null onAddPage?: (type: 'markdown' | 'image') => void }): React.ReactElement { return (
) } function EditorColumn(params: { value: string; onChange: (value: string) => void }): React.ReactElement { return (