import { ChtmlHighlighter } from './chtml_highlighter.js'; import { ColorPicker } from './color_picker.js'; import { CssHighlighter } from './css_highlighter.js'; import { HtmlHighlighter } from './html_highlighter.js'; import { MmlCssHighlighter } from './mml_css_highlighter.js'; import { MmlHighlighter } from './mml_highlighter.js'; import { SvgHighlighter } from './svg_highlighter.js'; import { SvgV3Highlighter } from './svg_v3_highlighter.js'; export function highlighter(back, fore, rendererInfo) { const colorPicker = new ColorPicker(back, fore); const renderer = rendererInfo.renderer === 'NativeMML' && rendererInfo.browser === 'Safari' ? 'MML-CSS' : rendererInfo.renderer === 'SVG' && rendererInfo.browser === 'v3' ? 'SVG-V3' : rendererInfo.renderer; const highlighter = new (highlighterMapping[renderer] || highlighterMapping['NativeMML'])(); highlighter.setColor(colorPicker); return highlighter; } export function update(back, fore, highlighter) { const colorPicker = new ColorPicker(back, fore); highlighter.setColor(colorPicker); } export function addEvents(node, events, rendererInfo) { const highlight = highlighterMapping[rendererInfo.renderer]; if (highlight) { new highlight().addEvents(node, events); } } const highlighterMapping = { SVG: SvgHighlighter, 'SVG-V3': SvgV3Highlighter, NativeMML: MmlHighlighter, 'HTML-CSS': HtmlHighlighter, 'MML-CSS': MmlCssHighlighter, CommonHTML: CssHighlighter, CHTML: ChtmlHighlighter };