@churchapps/apphelper-markdown
Version:
ChurchApps markdown/lexical editor components
28 lines (27 loc) • 1.06 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { AutoLinkPlugin as LexicalAutoLinkPlugin } from "@lexical/react/LexicalAutoLinkPlugin";
const URL_MATCHER = /((https?:\/\/(www\.)?)|(www\.))[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;
const EMAIL_MATCHER = /(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;
const MATCHERS = [
(text) => {
const match = URL_MATCHER.exec(text);
return (match && {
index: match.index,
length: match[0].length,
text: match[0],
url: match[0]
});
},
(text) => {
const match = EMAIL_MATCHER.exec(text);
return (match && {
index: match.index,
length: match[0].length,
text: match[0],
url: `mailto:${match[0]}`
});
}
];
export default function AutoLinkPlugin() {
return _jsx(LexicalAutoLinkPlugin, { matchers: MATCHERS });
}