/
githubmirror
/
marktext
Обзор
Документация
Войти
/
githubmirror
/
marktext
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
packages/muya/src/inlineRenderer/renderer/autoLink.ts
55 строк
2 KB
Ran Luo
fix(muya): stop double percent-encoding autolink hrefs (#4841)
04 июл 2026, 14:33
Не верифицирован
04 июл 2026, 14:33
404c8c8
Код
Авторство
О чём код?
import type { AutoLinkToken, ISyntaxRenderOptions } from '../types'; import type Renderer from './index'; import { CLASS_NAMES } from '../../config'; import { sanitizeHyperlink } from '../../utils/url'; // render auto_link to VNode export default function autoLink( this: Renderer, { h, cursor, block, token, outerClass }: ISyntaxRenderOptions & { token: AutoLinkToken }, ) { const className = this.getClassName(outerClass, block, token, cursor); const { isLink, marker, href, email } = token; const { start, end } = token.range; const startMarker = this.highlight( h, block, start, start + marker.length, token, ); const endMarker = this.highlight(h, block, end - marker.length, end, token); const content = this.highlight( h, block, start + marker.length, end - marker.length, token, ); const hyperlink = isLink ? href : `mailto:${email}`; return [ h(`span.${className}`, startMarker), h( `a.${CLASS_NAMES.MU_INLINE_RULE}.${CLASS_NAMES.MU_AUTO_LINK}`, { attrs: { spellcheck: 'false', }, props: { href: sanitizeHyperlink(hyperlink), target: '_blank', }, dataset: { start: String(start), end: String(end), raw: token.raw, }, }, content, ), h(`span.${className}`, endMarker), ]; }