import { createContext, useContext } from 'react'; import { MarkupLanguage } from '@joplin/renderer'; import { ResourceInfos } from '../../utils/types'; import { MarkupToHtmlOptions } from '../../../hooks/useMarkupToHtml'; import { RenderResult } from '@joplin/renderer/types'; import { ThemeAppearance } from '@joplin/lib/themes/type'; export interface WhiteboardContextValue { markupToHtml: (markupLanguage: MarkupLanguage, md: string, options?: MarkupToHtmlOptions)=> Promise; resourceInfos: ResourceInfos; resourceDirectory: string; themeId: number; themeAppearance: ThemeAppearance; onOpenRef: (ref: string)=> void; onUpdateNode: (canvasNodeId: string, patch: Record)=> void; onPromoteTextNode: (canvasNodeId: string)=> void; } export const WhiteboardContext = createContext(null); export const useWhiteboardContext = () => { const ctx = useContext(WhiteboardContext); if (!ctx) throw new Error('WhiteboardContext used outside provider'); return ctx; };