Add markdown link tooltip support to the visual editor

GitOrigin-RevId: 7ab4fd0793f057c86e4fc0307d81df376efe4d34
This commit is contained in:
Domagoj Kriskovic
2026-06-16 08:05:46 +00:00
committed by Copybot
parent 93a4f0c88a
commit 8ccdc0fbc4
2 changed files with 51 additions and 8 deletions
@@ -5,8 +5,10 @@ import {
} from './codemirror-context'
import {
closeCommandTooltip,
commandTooltipHandlers,
commandTooltipState,
} from '../extensions/command-tooltip'
import type { CommandTooltipHandler } from '../extensions/command-tooltip'
import ReactDOM from 'react-dom'
import { HrefTooltipContent } from './command-tooltip/href-tooltip'
import { UrlTooltipContent } from './command-tooltip/url-tooltip'
@@ -68,14 +70,18 @@ export const CodeMirrorCommandTooltip = memo(function CodeMirrorLinkTooltip() {
}
return ReactDOM.createPortal(
<CodeMirrorCommandTooltipContent command={tooltipState.command} />,
<CodeMirrorCommandTooltipContent
command={tooltipState.command}
handlers={state.facet(commandTooltipHandlers)}
/>,
tooltipView.dom
)
})
const CodeMirrorCommandTooltipContent = memo<{
command: string
}>(function CodeMirrorCommandTooltipContent({ command }) {
handlers: readonly CommandTooltipHandler[]
}>(function CodeMirrorCommandTooltipContent({ command, handlers }) {
switch (command) {
case 'HrefCommand':
return <HrefTooltipContent />
@@ -89,7 +95,10 @@ const CodeMirrorCommandTooltipContent = memo<{
return <InputTooltipContent />
case 'Subfile':
return <SubfileTooltipContent />
default:
return null
default: {
// Tooltips contributed by modules via the `commandTooltipHandlers` facet
const handler = handlers.find(handler => handler.command === command)
return handler ? handler.render() : null
}
}
})